iOS开发之 NSNotificationCenter为何add remove要成对出现

最近发现UMeng统计出现了一个崩溃统计报告,研究一会以后发现,原来是NSNotificationCenter出了问题,在viewDidLoad的时候添加了通知中心的监听对象,可是在类的销毁代码却没有加上移除监听对象的方法。终于找到Crash缘由了!server

修改代码是一瞬间的事情,功夫全花在找出Bug的路上了。NSNotificationCenter为何必定要加上移除监听对象的方法呢?对象

好吧,在通知中心所在类被暂时干掉的时候,通知中心并无自动移除,别忘了,在内存紧张的时候,系统是会把前面暂时没有用到部分在内存的类先移除掉的,这个时候,若是很不幸的,若是你的那个NSNotificationCenter所在类被干掉了。可是在后面的代码中,你又发出了通知,接下来收到通知后,NSNotificationCenter调用收到对应通知的处理方法的时候,该方法已经不存在了,没错,你中奖了,程序直接crash掉。这就是为何addObserver的时候在delloc的类要成对出现一个removeObserver的缘由。内存

相关文章
相关标签/搜索