在ViewDidUnload和dealloc中都有NSNotification,addObserver和removeObserver - removeObserver?

时间:2011-04-03 18:16:33

标签: objective-c ios uiviewcontroller nsnotifications addobserver

我想添加一个视图控制器作为通知的观察者。

调用选择器方法时,我会提醒用户。我希望只有当这个视图控制器是顶视图控制器时才会出现此警报。

我想在viewDidLoad方法中将其添加为观察者。但哪里更好地删除视图控制器作为观察者?

如果我在viewDidUnloaddealloc中将其删除,会不会有问题?

1 个答案:

答案 0 :(得分:2)

没有。根据{{​​3}}:

从接收者的调度表中删除指定给定观察者的所有条目。

如果没有这样的条目,则没有什么可以删除,所以这不是问题。

但是,根据您使用它的方式,在viewDidLoad中将其添加为观察者并不意味着只有在该视图控制器是“顶视图控制器”时才会使用它(例如,如果您有几个标签并从一个标签移动到另一个标签,除非您收到内存警告,否则当您离开它们时,其他(不可见)标签的视图将不会被卸载。)

根据您的目标,最好在viewDidAppear上添加观察者(如果是,请在viewWillDisappear上删除)。