Я видел несколько сообщений, связанных с делегатами, и я хотел бы знать правильный способ их ссылки. Предположим, что у меня есть объект, объявленный как:
@interface MyViewController : UITableViewController {
id delegate;
}
@property (nonatomic, retain) id delegate;
@end
Через жизненный цикл MyViewController он будет обращаться к методам своего делегата в ответ на взаимодействие с пользователем.
Когда нужно избавиться от экземпляра MyViewController, нужен ли delegate ivar release в методе реализации dealloc, поскольку он объявлен с помощью retain?
Или наоборот, должен ли delegate быть сохранен? Возможно, это должно быть @property (nonatomic, assign) id delegate? Согласно Apple docs:
сохранить... Обычно этот атрибут используется для таких скалярных типов, как NSInteger и CGRect, или (в среде с подсчетом ссылок) для объектов, которые у вас нет, таких как делегаты.
Обычно я просто согласен с тем, что говорят документы, но я видел много кода, который вызывает retain в делегате. Это просто "плохой код"? Я откладываю здесь экспертов... Каков правильный способ справиться с этим?