Bug NSNotificationCenter
Hello,
Core un bug que j'arrive pas à corriger.
Pour supprimer des entrées j'utilise une fenêtre de confirmation et quand je ferme celle-ci ça envoie:
NSDictionary* robert = @{@"close": @"delete"}; [[NSNotificationCenter defaultCenter] postNotificationName:notifDelete object:nil userInfo:robert];
qui est reçu dans:
[[NSNotificationCenter defaultCenter] addObserverForName:@"deleteStreamListener" object:nil queue:nil usingBlock:^(NSNotification *note) { blablabla }];
et quand je quitte la vue je désactive:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"deleteStreamListener" object:nil];
ce qui n'a absolument aucun effet.
Le problème... quand je quitte la vue et que je reviens dessus ça me créé un nouveau ce qui fait que si je supprime une entrée ben ça m'en dégage 2, 3 4 etc.
Une idée ?
Réponses
Sauf erreur, addObserverForName te renvoi un observer (type opaque)... Ce n'est pas la fenêtre qui est observer... Il faut que tu conserves l'objet renvoyé. C'est lui que tu passes en paramètre de removeObserver...
Comme dit klog, tu as mélangé deux types d'observations.
Regarde la doc de addObserverForName:object:queue:usingBlock:">
addObserverForName:object:queue:usingBlock:
C'est :
&
ou
&
+1
Utiliser
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSNotificationName)aName object:(id)anObject;
est une alternative viable.Résolu, merci beaucoup