Рассмотрим следующую ситуацию.Способ Rigtht для реализации методов Aysnchronous Delegate
-(void) foo {
Object * obj = [[Object alloc] init];
obj.delegate = self;
[obj excuteAsync];
}
-(void) delegateMethodReturned {
// do something
}
Здесь executeAync возвращается асинхронно через некоторое время. Таким образом, мы не можем безопасно освободить объект. Каков наилучший шаблон проектирования для реализации такой ситуации без объявления obj как iVar.
Благодаря
Лучший дизайн - это сделать iVar. У вас «есть», потому что он длится дольше, чем foo. Просто. Он не является самодостаточным внутри foo, поэтому он не должен быть локальным для foo. Просто. Просто потому, что вы создаете что-то внутри foo, это не значит, что он концептуально существует только внутри foo, так как в этом случае он намного больше, чем просто foo. Просто! Случай настолько ясен, я бы сказал, что вы «должны» сделать его iVar. – Fattie