Вам необходимо заполнить свойство вручную. Исключение составляют случаи, когда у вас есть IBOutlet property
, который вы подключили в nib-файле; это будет заполнено автоматически при загрузке пера.
Я считаю, что для контроллеров представления подавляющее большинство свойств IBOutlets
и свойств, которые описывают то, что будет отображать представление, а последний случай обычно задается объектом, который создает контроллер представления. Обычно это относится к контроллеру представления, который показывает подробное представление для некоторого объекта.
Если у вас есть свойства, полностью локальные по отношению к контроллеру представления, общий шаблон - написать собственный метод получения и установки (вместо использования @synthesize
) и создать объект в получателе, если он не существует. Такое поведение с отложенной загрузкой означает, что вы можете легко высвободить ресурсы в условиях нехватки памяти и что вы платите только за загрузку объекта, когда вам это нужно.
// simple lazy-loading getter
-(MyPropertyClass*)propertyName {
if(propertyIvarName == nil) {
propertyIvarName = [[MyPropertyClass alloc] init];
// ... other setup here
}
return propertyIvarName;
}