5

puedo tener un observador en el método de notificación mi punto de vista del controlador de init así:¿Dónde debo eliminar un observador de notificación?

[[NSNotificationCenter defaultCenter] 
        addObserver:self 
        selector:@selector(saveState) 
        name:UIApplicationWillResignActiveNotification 
        object:nil]; 

Dónde es el mejor lugar para llamar removeObserver:name:object: para esta notificación. Actualmente estoy llamando en mi método dealloc, pero quería saber si eso podría causar problemas.

Respuesta

8

No, lo tienes bien. dealloc es la ubicación correcta para eliminar observadores de notificación (a menos que tenga algún motivo específico para tener que eliminar al observador antes).

+0

Gracias por esto, es bueno obtener la confirmación. –

+0

¿Podría publicar una referencia a la documentación oficial? – rraallvv

1

Siempre puede quitar el observador en viewWillDisappear:, o cuando haya terminado de usarlo y no lo necesite, puede colocarlo en una función.

+0

A menos que la vista vuelva a aparecer. Creo que su enfoque funcionaría si comencé el observador de notificaciones en 'viewWillAppear:'. –

1

Si el -saveState sólo tiene que ejecutar una vez cuando está activo, entonces se puede removeObserver dentro del -saveState.

+0

Presumiblemente, querría guardar nuevamente si la aplicación se activa y luego vuelve a estar activa. –

+0

Tienes razón. Supongo que se registrará como observador nuevamente cuando la aplicación se active. – AechoLiu

+0

Acabo de usar 'saveState' como ejemplo, pero probablemente debería llamarse una y otra vez (por ejemplo, cuando la aplicación entrará en segundo plano) así que me gusta usar' dealloc' mejor. –

Cuestiones relacionadas