iOS9.0之前不移除是會(huì)崩潰的,iOS9.0之后不移除是不會(huì)崩潰的。
為什么呢?原因在這里。。。
我們都知道在 iOS 開(kāi)發(fā)中我們會(huì)經(jīng)常用到NSNotificationCenter用于對(duì)象間通信方式,特別是在針對(duì)一對(duì)多和跨層通信的時(shí)候,而在觀察者注冊(cè)時(shí),通知中心并沒(méi)有對(duì)觀察者對(duì)象做 retain 處理,而是對(duì)觀察者對(duì)象進(jìn)行unsafe_unretained 引用,而usafereference與weak reference的區(qū)別是當(dāng)被引用的對(duì)象釋放時(shí)不會(huì)自動(dòng)置為nil,也就是成了野指針,而weak會(huì)當(dāng)被引用的對(duì)象釋放時(shí)自動(dòng)置為nil,所以也就導(dǎo)致了我們?cè)趇OS9.0之前沒(méi)有手動(dòng)移除通知的時(shí)候?qū)ο蟊会尫诺舳ㄖ行木统闪艘爸羔?所有造成了崩潰問(wèn)題,然后在iOS9.0之后通知中心對(duì)觀察者做了弱引用