IOS 8 发送通知崩溃的问题

最近偶然发现项目在 ios 8 上面很容易就崩溃了,最终跟踪了一下代码,发现问题出在发送通知上,一发送就崩溃了,出现了垃圾地址俗称的僵尸对象,

image.png

BAD_ACCESS 发送通知挂掉,虽然传的值都没问题,但是通知的接收对象已经销毁了,所以会崩溃

image.png

如果在iOS9或更高系统运行下是没问题的,系统做了一些优化处理;
但是在iOS8 系统下就会发生崩溃 ,当你重复执行发送通知的时候就会崩溃,其实就是因为没有移除通知
在接受通知的类或者界面里的 dealloc 方法中 移除通知就OK

/** IOS 8 发送通知崩溃的问题 */
- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
Using iOS 9 or later the Foundation framework release notes contain some good news:

In OS X 10.11 and iOS 9.0 NSNotificationCenter and NSDistributedNotificationCenter will no longer send notifications to registered observers that may be deallocated.

使用iOS 9或更高版本的Foundation框架发行说明包含一些好消息:

在OS X 10.11和iOS 9.0中,NSNotificationCenter和NSDistributedNotificationCenter将不再向可能已解除分配的已注册观察者发送通知。

这下明白了吧!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。