web-dev-qa-db-fra.com

NSNotificationCenter removeObserver dans ARC est-il nécessaire?

L'ajout d'un observateur augmente-t-il le nombre de rétentions d'un objet? Si oui, ARC prend-il également en charge le retrait de cet observateur? Sinon, où dois-je retirer l'observateur?

42
Tudor

Vous devez supprimer explicitement l'observateur même si vous utilisez ARC. Créez une méthode dealloc et supprimez-la.

-(void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

Si vous voyez la méthode que vous n'avez pas besoin d'appeler [super dealloc]; ici, seule la méthode sans super dealloc est nécessaire.

MISE À JOUR pour Swift

Vous pouvez supprimer l'observateur dans la méthode deinit si vous écrivez du code dans Swift.

deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
       }
79
nsgulliver