que je fais quelque chose comme ceci:Comment puis-je vérifier si un délégué est valide?
@protocol CallbackDelegate
-(void) performCallback;
@end
@interface MyObject : NSObject {
id<CallbackDelegate> delegate;
}
-(void)AsyncFuncCall;
@end
@property (nonatomic, assign) id<CallbackDelegate> *delegate;
Le code qui possède MyObject
met en place un délégué pour recevoir la fonction de rappel:
MyObject *myobject = [[MyOject alloc] init];
myobject.delegate = x;
Puis, en MyObject
, à la suite d'une fonction asynchrone appel je vais signaler au délégué:
-(void)AsyncFuncCall {
[delegate performCallback];
}
Tout semble bien fonctionner la plupart du temps, sauf pour le occasions où mon délégué a été libéré à la suite d'un nettoyage de la mémoire valide. Dans ce cas, je veux simplement ne pas effectuer le rappel
Est-ce que quelqu'un sait le meilleur moyen de vérifier si un délégué est valide?
J'ai essayé toutes sortes de choses telles que:
if (delegate != nil) {
...
}
sans chance.
Génial, cela semble devoir fonctionner aussi! Avant, je retenais des délégués pour contourner les problèmes que j'avais - mais mon code avait l'air tellement en désordre et ça ne me paraissait pas très bien. Votre solution ci-dessus ressemble à cela. Merci encore, Nick. –