Следы памяти объектов и объектов Obj-C
В этом конкретном проекте по какао у меня есть свойства для набора представлений, и соответствующие подпредставления анализируются из файла XML.
Только один вид в наборе активен одновременно, и представления могут часто меняться.
Будет ли лучше
A.) Инициализируйте объекты представления с проанализированными свойствами и сохраните ссылку на них в массиве, который будет использоваться при необходимости.
b.) Инициализируйте объект NSO с проанализированными свойствами, которые, в свою очередь, могут создать его соответствующее представление по требованию через фабрику.
Логика этого заключается в том, что неиспользуемые NSView (большинство) могут быть освобождены ARC при необходимости, поскольку они не будут иметь постоянной ссылки.
Это вызывает другой вопрос.
Все ли это выполняется в фоновом режиме (поскольку NSView является подклассом NSObject), когда на NSView есть ссылка, но она не отображается?
1 ответ
Вы описываете реализацию своей собственной версии XIBS. Я хочу сказать, что "лучший" ответ - пересмотреть ваше дизайнерское решение. Вероятно, есть лучший и более простой способ достичь желаемого результата.
Разница в памяти между массивом объектов NSO, описывающих все свойства и подпредставления NSView по сравнению с массивом NSView, является номинальной.
Самый эффективный способ памяти - это ленивая десериализация отдельного представления через NSWindowController или NSViewController.