¿Está bien utilizar primero -removeObserver:
y luego llamar al -addObserver:
con el mismo nombre? ¿O es una regla tener -addObserver:
primero antes de -removeObserver:
?addobserver/removeobserver query
Lo probé usando OS 4.0 y parece estar bien (sin bloqueo, advertencias ... 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 razón es evitar que dos observadores con el mismo método que se llama dos veces selectorName
asumiendo que -setObserver
método fue llamado de nuevo si su interior -viewDidLoad
y una advertencia de memoria se emitió.
Además, ¿necesito invocar -removeObserver:
durante -dealloc
?
+1 buena pregunta. No sé si es seguro eliminar un observador que no estaba registrado anteriormente, pero sé que es imprescindible eliminarlo antes de destrabarlo. Para su caso dado, también podría eliminar el observador en viewDidUnload. Para eso es este método: Equilibrar todas las llamadas realizadas en loadView y viewDidLoad. – tonklon