Во-первых, я понимаю, что разница между значениями и ссылочными типами -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
? Они не являются "объектами" в нормальном смысле, просто удобными группами связанных методов и необходимым состоянием. А так как для кода почти тысяча строк для каждого, и я не хочу ставить его в один класс или даже в тот же файл.
У меня просто нет хорошего представления о том, как удалить все мое состояние, использовать чистые функции для всех сложных математических операций, выполняемых на массивах, и где их разместить.