我看到NSNotification
addObserver / removeObserver放置在viewDidLoad
/ viewDidUnload
,viewDidAppear
/ viewDidDisappear ,
dealloc` ....
这里使用的正确方法是什么,所以事情干净整洁?
答案 0 :(得分:4)
对于viewControllers:
我会在viewWillAppear:
和viewDidDisappear:
说。
原因是只要您的视图“在屏幕上”,您就会关注这些通知。
由于当您的视图位于屏幕外viewDidLoad
并且viewDidUnload
是(de)注册通知的错误位置时,无需卸载视图。
注册非观看通知:
在designated initializer
和dealloc
。
答案 1 :(得分:4)
这取决于。您是否只想在视图控制器在屏幕上时接收通知(然后viewWillAppear / Disappear可能是一个不错的选择),或者当视图当前不活动时也是如此。在后一种情况下,init方法可能比viewDidLoad
更适合(或者对于视图当前在内存中的通知是否重要?)。
另请注意,在所有情况下都不会调用viewDidUnload
(仅当视图被卸载但视图控制器仍保留在内存中时 - 如果在加载视图时取消分配视图控制器,则仅dealloc
被调用,是取消注册的正确位置。