NSNotificationCenter: Why bother calling removeObserver?

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-20 02:15:21

问题


The gods have parachuted many habits into my isolated jungle village, such as:

- (void) dealloc {

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

}

Their ways are strange to me, yet I still seek to understand them.

Why bother cleaning loose ends up if the instance is going away? Will the reference/retain count to that instance not be decremented? Will it clutter some sort of Notification Hash Table lurking out there that holds a list of all the listeners?


回答1:


NSNotificationCenter doesn't retain observers. If you don't remove the observer, and the observer is deallocated, then NSNotificationCenter is left holding a dangling pointer which will (most often) crash when it next tries to notify the observer.




回答2:


Although in practice many of your uninitiated younglings will get away without following the rites, because it has pleased St. Jobs to bestow a removeObserver incantation upon many of your super classes. Such as UINavigationController. Although this is not found in any the Writings I have found this to be true.



来源:https://stackoverflow.com/questions/3964041/nsnotificationcenter-why-bother-calling-removeobserver

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!