NSNotification addObserver / removeObserver将它们放入的正确方法

时间:2012-06-08 12:07:42

标签: ios ios5 nsnotificationcenter

我看到NSNotification addObserver / removeObserver放置在viewDidLoad / viewDidUnloadviewDidAppear / viewDidDisappear , dealloc` ....

这里使用的正确方法是什么,所以事情干净整洁?

2 个答案:

答案 0 :(得分:4)

对于viewControllers:
我会在viewWillAppear:viewDidDisappear:说。 原因是只要您的视图“在屏幕上”,您就会关注这些通知。 由于当您的视图位于屏幕外viewDidLoad并且viewDidUnload是(de)注册通知的错误位置时,无需卸载视图。

注册非观看通知: 在designated initializerdealloc

答案 1 :(得分:4)

这取决于。您是否只想在视图控制器在屏幕上时接收通知(然后viewWillAppear / Disappear可能是一个不错的选择),或者当视图当前不活动时也是如此。在后一种情况下,init方法可能比viewDidLoad更适合(或者对于视图当前在内存中的通知是否重要?)。

另请注意,在所有情况下都不会调用viewDidUnload(仅当视图被卸载但视图控制器仍保留在内存中时 - 如果在加载视图时取消分配视图控制器,则仅dealloc被调用,是取消注册的正确位置。