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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_28585351/article/details/78133756

今天无意中又捯饬了下观察者模式,发现现在项目里同事写的的通知没有进行移除,可是控制器销毁后竟然没有崩溃,查了下资料也没有找到很直观的解释(也可能关键字搜索问题尴尬),就查了下API,有综合了下网上看到的各种博客文章,只是个人理解,还望指正

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

我们都知道在 iOS 开发中我们会经常用到NSNotificationCenter用于对象间通信方式,特别是在针对一对多和跨层通信的时候,而在观察者注册时,通知中心并没有对观察者对象做 retain 处理,而是对观察者对象进行unsafe_unretained 引用,而usafereference与weak reference的区别是当被引用的对象释放时不会自动置为nil,也就是成了野指针,而weak会当被引用的对象释放时自动置为nil,所以也就导致了我们在iOS9.0之前没有手动移除通知的时候对象被释放掉而通知中心就成了野指针,所有造成了崩溃问题,然后在iOS9.0之后通知中心对观察者做了弱引用

猜你喜欢

转载自blog.csdn.net/sinat_28585351/article/details/78133756