È corretto utilizzare prima -removeObserver:
e quindi chiamare -addObserver:
con lo stesso nome? O è una regola avere -addObserver:
prima di -removeObserver:
?query addobserver/removeobserver
Ho provato utilizzando il sistema operativo 4.0 e sembra OK (nessun incidente, avvisi ... ecc.).
-(void) setObserver
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:OBSERVER_NAME object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector: @selector(selectorName)
name:OBSERVER_NAME
object:nil];
}
Il motivo è quello di evitare che due osservatori con lo stesso metodo selectorName
chiamato due volte assumendo che -setObserver
metodo è stato chiamato nuovamente se all'interno -viewDidLoad
e un avviso di memoria è stato rilasciato.
Inoltre, è necessario richiamare -removeObserver:
durante -dealloc
?
+1 buona domanda. Non so se è stato salvato per rimuovere un Observer che non è stato registrato prima, ma so che è un dovere rimuovere l'osservatore prima di deallocare. Per il tuo caso specifico puoi anche rimuovere l'osservatore in viewDidUnload. Ecco a cosa serve questo metodo: Bilanciamento di tutte le chiamate effettuate in loadView e viewDidLoad. – tonklon