2011-11-25 26 views
0

我有一個viewcontroller。在它裏面有一個nsnotification觀察者。我從另一個viewcontroller發佈通知。但nsnotification觀察者選擇器被觸發兩次或有時三次。我的問題是,當我使用[查看removeFromSuperview]; 刪除此viewcontrollers視圖,是通知觀察員刪除?我已經在視圖控制器類nsnotificationcenter方法不止一次觸發

- (void)dealloc { 
    [super dealloc]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 

} 

回答

2

,當viewcontrollers保留計數變爲0

您應該添加另一種方法,當畫面從其他視圖 - 控制刪除了將被調用,調用方法將被調用

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

對於多次調用選擇器的問題,我需要看到更多代碼 - 確保發佈通知的代碼行不會被多次調用

+0

否僅後調用方法被調用一次。現在它可以有兩種方法......視圖控制器的兩個實例在那裏。或那個通知觀察員以前沒有刪除正在發射... – sujith1406

+1

是真的 - 嘗試記錄自我,看看是否打印相同的地址 – DanZimm

+0

亞是這樣的原因記錄自我給同一類名稱不同的地址 – sujith1406

1

NSNotification註冊到整個應用程序(甚至所有操作系統),而不是單一的視圖或視圖控制器的dealloc方法給出此方法。如果它不再使用,你需要在你的動作中刪除觀察者。在這種情況下,您只能處理一個髮布的通知。