Envisagez la situation suivante.Façon rigoureuse d'implémenter des méthodes de délégués asynchrones
-(void) foo {
Object * obj = [[Object alloc] init];
obj.delegate = self;
[obj excuteAsync];
}
-(void) delegateMethodReturned {
// do something
}
Ici, executeAync retourne de manière asynchrone après un certain temps. Ainsi, nous ne pouvons pas libérer obj en toute sécurité. Quel est le meilleur modèle de conception pour implémenter une telle situation sans déclarer obj comme un iVar.
Merci
Le meilleur modèle de conception est de faire un iVar. Vous "devez", car cela dure plus longtemps que foo. Simple. Il n'est pas autonome dans foo, donc il ne devrait pas être local à foo. Simple. Tout simplement parce que vous instanciez quelque chose à l'intérieur de foo, cela ne signifie pas qu'il existe conceptuellement seulement dans foo, car dans ce cas, il est beaucoup plus grand que juste foo. Simple! L'affaire est si claire que je dirais que vous "devez" en faire un iVar. – Fattie