【问题标题】:NSNotification, addObserver and removeObserver - removeObserver both in ViewDidUnload and dealloc?NSNotification、addObserver 和 removeObserver - ViewDidUnload 和 dealloc 中的 removeObserver?
【发布时间】:2011-04-03 18:16:32
【问题描述】:

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

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

我想将它添加为viewDidLoad 方法中的观察者。但是将视图控制器作为观察者在哪里更好呢?

如果我在viewDidUnloaddealloc 中都删除它会不会有问题?

【问题讨论】:

    标签: objective-c ios uiviewcontroller nsnotifications addobserver


    【解决方案1】:

    没有。根据the documentation

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

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

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

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

    【讨论】:

    • 谢谢...我想我会使用你最后的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多