Во-первых, я понимаю, что разница между значениями и ссылочными типами -this не является вопросом. Я переписываю часть своего кода в Swift и решил также реорганизовать некоторые из классов. Поэтому я думал, что посмотрю, есть ли у некоторых классов смысл как структуры.
Память: у меня есть некоторые классы моделей, которые содержат очень большие массивы, которые постоянно растут в размерах (неизвестный конечный размер) и могут существовать в течение нескольких часов. Во-первых, существуют ли какие-либо рекомендации относительно предполагаемого или абсолютного размера для структуры, поскольку он живет в стеке?
Использование рефакторинга: Поскольку я рефакторинг того, что сейчас является беспорядком со слишком большой зависимостью, интересно, как я мог бы улучшить это. Контроллеры просмотров и просмотра в основном легко, это моя модель и то, что она делает, что всегда оставляло меня желать лучшего примера.
WorkerManager: Singleton, который держит один или два Worker одновременно. Всегда будут записывать новые данные с датчика, а другой - просматривать сохраненные данные. Контроллеры вид получить Worker ссылку из WorkerManager, и попросить Worker для данных, которые будут отображаться.
Worker: все в очереди, чтобы предотвратить проблемы с доступом к памяти (указатели массива C постоянно изменяются по мере их роста). Прослушивание: Слушание Worker прослушивает новые данные, отправляет его на Processor объект (что он создан), который очищает данные и сохраняет его в массивах C, проведенных Worker. Тогда, если есть достоверные данные, то Worker указывает Analyzer (также принадлежащий работнику) для анализа данных и сохраняет его в других массивах C, подаваемого видом. Оба Processor и Analyzer нуждаются в состоянии знать, что произошло в прошлом, и что обрабатывать и анализировать дальше. Чистые исходные данные хранятся в отдельном объекте Record NSManaged. Рецензент берет Record и использует чистые исходные данные для воссоздания всех проанализированных данных, чтобы их можно было пересмотреть. (анализируемые данные массивны, и я не хочу хранить их на диске)
Теперь, мой второй вопрос: может ли/следует заменить Processor и Analyzer на структуры? Или, может быть, протоколы для Worker? Они не являются "объектами" в нормальном смысле, просто удобными группами связанных методов и необходимым состоянием. А так как для кода почти тысяча строк для каждого, и я не хочу ставить его в один класс или даже в тот же файл.
У меня просто нет хорошего представления о том, как удалить все мое состояние, использовать чистые функции для всех сложных математических операций, выполняемых на массивах, и где их разместить.