將觀察者添加到NSNotificationCenter
或從中刪除觀察者的最佳做法是什麼?向NSNotificationCenter中添加/刪除觀察者的最佳做法
我想知道如果在viewDidLoad
添加self
作爲觀察員和viewDidUnload
消除self
就足夠了。或者也許我應該刪除self
dealloc
以及。
可能需要考慮低內存條件。我可以看到在viewDidLoad
中添加和刪除在dealloc
有問題:viewDidUnload
由於內存不足而被調用...然後在視圖再次顯示時調用viewDidLoad
...現在self
已作爲觀察者添加兩次而不被刪除(因爲沒有調用dealloc
)。
注意:我正在考慮一個基本的例子,其中self
是指UIViewController
子類。
有趣。所以在iOS 5+中,在低內存條件下調用viewDidUnload來取代什麼呢? – SundayMonday 2012-01-01 19:07:44
'didReceiveMemoryWarning'繼續在低內存條件下被調用。另外,請查看蘋果的[UIViewController](http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html)(具體來說就是那裏的「內存管理」部分):當發生低內存警告,如果UIViewController類知道它可以重新加載或稍後重新創建它們,則清除它的視圖。如果發生這種情況,它還會調用viewDidUnload方法,以使您的代碼有機會放棄與視圖層次關聯的任何對象的所有權。 – 2012-01-01 19:12:10