iOS 通知不移除会有什么影响

iOS9.0之前不移除是会崩溃的,iOS9.0之后不移除是不会崩溃的。

为什么呢?原因在这里。。。

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

你可能感兴趣的:(iOS 通知不移除会有什么影响)