您的位置:首页 > 移动开发 > IOS开发

iOS没有移除通知也不会崩溃问题

2017-09-29 14:50 253 查看
今天无意中又捯饬了下观察者模式,发现现在项目里同事写的的通知没有进行移除,可是控制器销毁后竟然没有崩溃,查了下资料也没有找到很直观的解释(也可能关键字搜索问题

),就查了下API,有综合了下网上看到的各种博客文章,只是个人理解,还望指正

这里先说下,之所以没有崩溃是因为在iOS9.0后我们才不用移除也不会有异常,而在9.0之前我们还是要手动移除的,这里需要大家注意下

我们都知道在 iOS 开发中我们会经常用到NSNotificationCenter用于对象间通信方式,特别是在针对一对多和跨层通信的时候,而在观察者注册时,通知中心并没有对观察者对象做 retain
处理,而是对观察者对象进行unsafe_unretained 引用,而usafereference与weak
reference的区别是当被引用的对象释放时不会自动置为nil,也就是成了野指针,而weak会当被引用的对象释放时自动置为nil,所以也就导致了我们在iOS9.0之前没有手动移除通知的时候对象被释放掉而通知中心就成了野指针,所有造成了崩溃问题,然后在iOS9.0之后通知中心对观察者做了弱引用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐