【问题标题】:NSNotificationCenter: Why bother calling removeObserver?NSNotificationCenter:为什么要调用 removeObserver?
【发布时间】:2010-10-18 22:47:48
【问题描述】:

众神将许多习惯空降到我与世隔绝的丛林村庄,例如:

- (void) dealloc {

  [[NSNotificationCenter defaultCenter] removeObserver:self];
  [super dealloc];

}

他们的方式对我来说很陌生,但我仍然试图理解他们。

如果实例消失,为什么还要清理松散的末端?对该实例的引用/保留计数不会减少吗?它是否会弄乱某种隐藏在其中的通知哈希表,其中包含所有侦听器的列表?

【问题讨论】:

    标签: cocoa


    【解决方案1】:

    NSNotificationCenter 不保留观察者。如果您不删除观察者,并且观察者被释放,那么NSNotificationCenter 会留下一个悬空指针,当它下次尝试通知观察者时(通常)会崩溃。

    【讨论】:

      【解决方案2】:

      虽然在实践中,你的许多不学无术的年轻人会在不遵守仪式的情况下逃脱,因为圣乔布斯很高兴将 removeObserver 咒语授予你的许多超级班级。如UINavigationController。虽然这在任何著作中都没有发现,但我发现这是真的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 1970-01-01
        • 2014-11-11
        • 1970-01-01
        • 2012-12-04
        • 1970-01-01
        相关资源
        最近更新 更多