我見過NSNotification
的addObserver/removeObserver放在viewDidLoad
/viewDidUnload
,viewDidAppear
/viewDidDisappear ,
dealloc` ....NSNotification的addObserver/removeObserver適當的方法將它們放在
什麼是正確的方法來這裏,所以使用事情是整潔和整齊?
我見過NSNotification
的addObserver/removeObserver放在viewDidLoad
/viewDidUnload
,viewDidAppear
/viewDidDisappear ,
dealloc` ....NSNotification的addObserver/removeObserver適當的方法將它們放在
什麼是正確的方法來這裏,所以使用事情是整潔和整齊?
對於viewControllers:
我會說viewWillAppear:
和viewDidDisappear:
。 原因是,只要您的視圖在「屏幕上」,您就會關注這些通知。 由於您的視圖不在屏幕上時不需要卸載視圖viewDidLoad
和viewDidUnload
是(de)註冊通知的錯誤位置。
用於註冊非意見通知: 在designated initializer
和dealloc
。
這取決於。你只想在你的視圖控制器在屏幕上時接收通知(然後viewWillAppear/Disappear可能是一個不錯的選擇),或者當視圖當前不活動時。在後一種情況下,init方法甚至可能比viewDidLoad
更適合(或者,視圖當前在內存中的通知是否重要?)。
還要注意的是viewDidUnload
不是在所有情況下(僅當視圖被卸載,但視圖控制器保持在內存中調用 - 如果視圖控制器被釋放,而視圖被加載,只有dealloc
被稱爲是正確的地方取消註冊
甚至在init和dealloc函數中,因爲它們對UI本身並沒有真正做任何事情,所以把它們放在init dealloc中會更好 –