2010-10-18 37 views
23

衆神已經空降許多習慣了我的孤立的叢林村莊,比如:NSNotificationCenter:爲什麼打擾調用removeObserver?

- (void) dealloc { 

    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [super dealloc]; 

} 

他們的方式很奇怪我,但我仍然試圖理解他們。

如果實例正在消失,爲什麼打擾疏鬆結束?對該實例的引用/保留計數是否不會遞減?它會混淆某種形式的通知散列表,它隱藏着所有聽衆的列表嗎?

回答

37

NSNotificationCenter不保留觀察者。如果你沒有移除觀察者,並且觀察者被釋放,那麼NSNotificationCenter留下一個懸掛指針,當它接下來試圖通知觀察者時(通常)會崩潰。

8

雖然在實踐中許多未入門的幼兒會在沒有遵循禮儀的情況下逃離,因爲它讓聖喬布斯感到高興,因爲它給你的許多超級班級賦予了一個咒語removeObserver。如UINavigationController。雖然這在任何我發現這是真實的作品中都沒有找到。

相關問題