1

我见过NSNotificationaddObserver/removeObserver 放在viewDidLoad/ viewDidUnloadviewDidAppear/viewDidDisappear ,dealloc`....

在这里使用什么正确的方法使事情变得整洁?

4

2 回答 2

4

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

注册非视图通知:在designated initializerdealloc中。

于 2012-06-08T12:13:03.043 回答
4

那要看。您是否只想在视图控制器在屏幕上时接收通知(然后 viewWillAppear/Disappear 可能是一个不错的选择)或者当视图当前未处于活动状态时接收通知。在后一种情况下,init 方法可能比viewDidLoad(或者通知视图当前在内存中是否重要?)。

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

于 2012-06-08T12:16:36.137 回答