NSNotificationCenter:为什么要打扰调用removeObserver?

时间:2010-10-18 22:47:49

标签: cocoa

众神将许多习惯跳伞到我孤立的丛林村庄,例如:

- (void) dealloc {

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

}

他们的方式对我来说很奇怪,但我仍然想要了解他们。

如果实例消失,为什么还要打扰松散?该实例的引用/保留计数是否会减少?是否会混淆某种包含所有听众列表的Notification Hash Table?

2 个答案:

答案 0 :(得分:37)

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

答案 1 :(得分:8)

虽然在实践中你的许多外行幼崽会在不遵守仪式的情况下离开,因为圣乔布斯很高兴在你的许多超级班上给予removeObserver咒语。例如UINavigationController。虽然在任何作品中都没有找到,但我发现这是真的。