L'aggiunta di un osservatore aumenta il numero di ritenzione di un oggetto? Se sì, ARC gestisce anche la rimozione di questo osservatore? In caso contrario, dove dovrei rimuovere l'osservatore?È necessario NSNotificationCenter removeObserver in ARC?
42
A
risposta
78
È necessario rimuovere in modo esplicito l'osservatore, anche si utilizza ARC
. Creare un metodo dealloc
e togliere lì ..
-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Se si vede il metodo non è necessario chiamare [super dealloc];
qui, solo il metodo, senza super-dealloc necessario.
aggiornamento per Swift
È possibile rimuovere osservatore deinit metodo se si sta scrivendo il codice a Swift.
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
Vedere [questa domanda] (http://stackoverflow.com/q/13911651/730701). – Adam
Questo è lo stesso come ho chiesto qualche mese fa :) –
Penso che sia valido ri-fare queste domande come preferisco cercare le risposte alle domande più nuovi nel caso in cui la saggezza percepita è cambiato. – amergin