NSNotification、addObserver 和 removeObserver - ViewDidUnload 和 dealloc 中的 removeObserver?
Posted
技术标签:
【中文标题】NSNotification、addObserver 和 removeObserver - ViewDidUnload 和 dealloc 中的 removeObserver?【英文标题】:NSNotification, addObserver and removeObserver - removeObserver both in ViewDidUnload and dealloc? 【发布时间】:2011-04-03 18:16:32 【问题描述】:我想添加一个视图控制器作为通知的观察者。
当调用选择器方法时,我会提醒用户。我希望此警报仅在此视图控制器是顶视图控制器时出现。
我想将它添加为viewDidLoad
方法中的观察者。但是将视图控制器作为观察者在哪里更好呢?
如果我在viewDidUnload
和dealloc
中都删除它会不会有问题?
【问题讨论】:
【参考方案1】:没有。根据the documentation:
从接收者的调度表中删除所有指定给定观察者的条目。
如果没有这样的条目,则没有什么可删除的,所以这不是问题。
但是,根据您使用它的方式,将其添加为 viewDidLoad 中的观察者并不意味着它只会在该视图控制器是“顶视图控制器”时使用(例如,如果您有多个选项卡并从一个选项卡移动到另一个选项卡,除非您收到内存警告,否则其他(不可见)选项卡的视图在您离开它们时不会被卸载)。
根据您的目标,最好在 viewDidAppear 上添加观察者(如果是这样,在 viewWillDisappear 上删除)。
【讨论】:
谢谢...我想我会使用你最后的建议。以上是关于NSNotification、addObserver 和 removeObserver - ViewDidUnload 和 dealloc 中的 removeObserver?的主要内容,如果未能解决你的问题,请参考以下文章