Я создаю приложение, которое должно иметь окно прогресса, в котором я хочу динамически вставлять подпредставление для каждого обрабатываемого элемента, например, окно панели файлов копирования Finder. А также удалить его динамически, когда обработка завершена.
Я хочу использовать одно и то же представление NSViewController для всех вложенных представлений и использую NSStackView для управления представлениями.
Но чтобы вспомогательные представления оставались в памяти, я должен хранить на них сильную ссылку, и единственный известный мне способ — создать свойство для каждого вспомогательного представления, которое мне нужно отобразить. Как это:
@propery (strong) NSViewController *myViewController1;
@propery (strong) NSViewController *myViewController2;
@propery (strong) NSViewController *myViewController3;
@propery (strong) NSViewController *myViewController4;
....
Я хотел бы знать, есть ли лучший, более динамичный способ сделать это? Или мне нужно создать x количество свойств для подпредставлений, чтобы знать, что у меня достаточно экземпляров для выделения, потому что я не могу сказать, сколько просмотров процесса потребуется пользователю при запуске приложения и экспорте элементов.
Поэтому я хотел бы динамически выделить каждое подпредставление И создать сильную ссылку на него. Это возможно? Или есть другой способ сделать то, что я хочу?
Пожалуйста, дайте мне знать, если я неясно выразился, я с удовольствием объясню больше, чтобы получить помощь в решении этой проблемы.
NSArray
s) сохраняют сильные ссылки на свои элементы. Вы сохраняете единственную сильную ссылку на массив и добавляете контроллеры представления в массив (который сохраняет на них сильные ссылки). Когда вы удаляете контроллер представления из массива, массив освобождает свою ссылку. Когда массив освобождается (после того, как вы освобождаете свою сильную ссылку на него, когда ваш объект освобождается, если не раньше), он также освобождает свои ссылки на все его элементы. - person Ken Thomases   schedule 02.04.2015