2010-05-19 3 views
0

Dans quelle méthode UIViewController dois-je définir toutes les occurrences du contrôleur de vue en tant que délégué? Est-ce viewDidUnload (trop tôt?), Dealloc (trop tard?) Ou autre chose?Quand arrêter UIViewController de recevoir des appels de délégué

+0

Hein? Quel type de protocole de délégué votre «UIViewController» est-il conforme? –

+0

Tout protocole. Question générique – hpique

Répondre

0

Pour éviter EXC_BAD_ACCESS, vous devez définir les propriétés de délégué sur zéro dans votre dealloc. Cela garantit que les autres objets ne tenteront pas d'envoyer des messages de délégué à votre objet après qu'il a été libéré. Par exemple, si votre UIViewController a une propriété webView, pour lequel il est un UIWebViewDelegate, vous devez faire:

- (void)dealloc { 
    self.webView.delegate = nil; 
    self.webView = nil; // assuming @property (nonatomic, retain), or use [webView release] if you prefer. 
    [super dealloc]; 
} 

Vous pouvez définir le délégué à zéro plus tôt si vous voulez arrêter de recevoir des messages de délégués pour une autre raison, mais ce n'est pas nécessaire si vous essayez juste d'éviter EXC_BAD_ACCESS.

Questions connexes