2013-02-02 8 views
6

Domanda veloce:Rimozione osservatore della NSNotificationCenter a Singleton Objective C

ho una classe Singleton, che è un marchio registrato per diversi NSNotifications. Poiché Singletons dura tutta la vita dell'app.

Devo implementare

[NSNotificationCenter defaultCenter] removeObserver:self] 

Nella mia classe Singleton?

Qual è il modo giusto per gestire il centro NSNotification in Singletons in iOS?

Grazie

+0

possibile duplicato di [Se aggiungi un osservatore per una notifica in AppDelegate, devo preoccuparmi di rimuoverlo?] (Http://stackoverflow.com/questions/9560419/if-add-an-observer-for- a-notification-in-the-appdelegate-do-i-need-to-bother-re) –

risposta

9

No, non è necessario smettere di osservare in questo caso. L'unica volta in cui la memoria utilizzata da un vero Singleton sarà mai deallocata è quando il programma termina. Quando il programma termina, prosegue e rilascia lo del della memoria e delle risorse che vengono comunque utilizzate.

+0

Grazie per il chiarimento – banditKing

+0

Felice di poterti aiutare! – lnafziger

0

Se si desidera che il singleton ascolti la notifica attraverso l'app, non è necessario rimuoverlo.

Se si vuole che a un certo punto il vostro Singleton dovrebbe interrompere la ricezione di notifiche poi si può aggiungere un metodo nella Singleton e può chiamare dove necessario

- (void)removeObserver { 
    [[NSNotificationCenter defaultCenter] removeObserver:self] ; 
} 
2

Solo per Memory bene, è necessario rimuovere correttamente in lo -dealloc.

+0

Come ho sottolineato nella mia risposta, in un singleton la memoria verrà rimossa quando il programma si chiude comunque ... L'intero punto di un singleton è di rimanere nella memoria finché il programma è in esecuzione. – lnafziger

+0

questo servirebbe la memoria dello sviluppatore se in qualche momento la classe verrà cambiata per uso non singleton – rsc