42 votes

NSNotificationCenter removeObserver dans ARC est-il nécessaire?

L'ajout d'un observateur augmente-t-il le nombre de retenues d'un objet? Si oui, ARC gère-t-il également le retrait de cet observateur? Sinon, où devrais-je retirer l'observateur?

79voto

nsgulliver Points 8019

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

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

Si vous voyez la méthode, 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 selon la méthode deinit si vous écrivez du code dans swift.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X