【问题标题】:nsnotificationcenter method fired more than oncensnotificationcenter 方法多次触发
【发布时间】:2011-11-25 18:37:19
【问题描述】:

我有一个视图控制器。里面有一个 nsnotification 观察者。我正在从另一个视图控制器发布通知。但是 nsnotification 观察者选择器会被触发两次或有时三次。我的问题是,当我使用 [view removeFromSuperview]; 要删除此视图控制器视图,通知观察者是否已删除?我在viewcontroller类的dealloc方法中给出了这个方法

- (void)dealloc {
    [super dealloc];
    [[NSNotificationCenter defaultCenter] removeObserver:self];

}

【问题讨论】:

    标签: iphone nsnotification


    【解决方案1】:

    没有。

    当视图控制器的保留计数变为 0 时将调用该方法

    您应该添加另一个方法,当视图从另一个视图控制器中删除时将调用该方法并调用

    [[NSNotificationCenter defaultCenter] removeObserver:self];
    

    对于选择器被多次调用的问题,我需要查看更多代码 - 确保发布通知的代码行没有被多次调用

    【讨论】:

    • no postnotification 方法只被调用一次。现在它可以有两种方式......视图控制器的两个实例都在那里。或者之前未删除的通知观察者正在触发......
    • true - 尝试记录自己并查看是否打印了相同的地址
    • 是的,这就是记录自我为同一个类名提供不同地址的原因
    【解决方案2】:

    NSNotification 注册到整个应用程序(甚至所有操作系统),而不是单个视图或视图控制器。如果不再使用,您需要在您的操作中删除观察者。在这种情况下,您只能处理一个已发布的通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 2023-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多