【问题标题】:Where should I remove a notification observer?我应该在哪里删除通知观察者?
【发布时间】:2011-01-13 21:40:27
【问题描述】:

我在视图控制器的init 方法中设置了一个通知观察者,如下所示:

[[NSNotificationCenter defaultCenter] 
                    addObserver:self
                    selector:@selector(saveState)
                    name:UIApplicationWillResignActiveNotification
                    object:nil];

在哪里最好致电removeObserver:name:object: 获取此通知。我目前在我的 dealloc 方法中调用它,但想知道这是否会导致问题。

【问题讨论】:

    标签: iphone objective-c cocoa-touch notifications nsnotifications


    【解决方案1】:

    不,你没看错。 dealloc 是移除通知观察者的正确位置(除非您有特定原因需要提前移除观察者)。

    【讨论】:

    • 谢谢,很高兴得到确认。
    • 能否请您发布对官方文档的参考。
    【解决方案2】:

    你可以随时移除viewWillDisappear:中的观察者,或者当你用完它并且不再需要它时,你可以将它放在一个函数中。

    【讨论】:

    • 除非视图再次出现。我认为如果我在 viewWillAppear: 中启动通知观察者,你的方法会奏效。
    【解决方案3】:

    如果-saveState在激活时只需要执行一次,那么你可以在-saveState中移除Observer。

    【讨论】:

    • 大概,如果应用程序变为活动状态然后又退出活动状态,他会想再次保存。
    • 你是对的。我假设当应用程序激活时,他将再次注册为观察者。
    • 我只是以saveState 为例,但可能需要一遍又一遍地调用它(例如当应用程序进入后台时),所以我更喜欢使用dealloc
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2015-04-25
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多