Est-il correct d'utiliser -removeObserver:
d'abord, puis appelez -addObserver:
avec le même nom? Ou est-ce une règle d'avoir -addObserver:
d'abord avant -removeObserver:
?addobserver/removeobserver requête
Je l'ai essayé en utilisant OS 4.0 et il semble OK (pas de crash, mises en garde ... etc.).
-(void) setObserver
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:OBSERVER_NAME object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector: @selector(selectorName)
name:OBSERVER_NAME
object:nil];
}
La raison est d'empêcher deux observateurs avec la même méthode selectorName
appelé deux fois en supposant que la méthode -setObserver
a été appelé à nouveau si son intérieur -viewDidLoad
et un avertissement de mémoire a été émis. De plus, dois-je appeler -removeObserver:
pendant -dealloc
?
+1 bonne question. Je ne sais pas s'il vaut mieux supprimer un observateur qui n'était pas enregistré auparavant, mais je sais que c'est un must pour supprimer l'observateur avant de le libérer. Pour votre cas, vous pouvez également supprimer l'observateur dans viewDidUnload. C'est ce que cette méthode est pour: Équilibrer tous les appels effectués dans loadView et viewDidLoad. – tonklon