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

use*_*030 23 cocoa

众神已将许多习惯带入我孤立的丛林村庄,例如:

- (void) dealloc {

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

}
Run Code Online (Sandbox Code Playgroud)

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

如果实例消失,为什么还要打扰松散?该实例的引用/保留计数是否会减少?是否会混淆某种通知哈希表,其中包含所有侦听器的列表?

Tom*_*ing 37

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


Ste*_*mer 8

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