在 iOS 9 之后往核,不需要再在 dealloc 方法中去移除通過 addObserver:selector:name:object: 方法注冊的通知的監(jiān)聽赁酝。 但是通過 addObserverForName:object:queue:usingBlock: 這個方法注冊的通知仍然需要手動移除清焕。
參考文檔:
個人理解罕模, iOS 9 之后自動移除通知的實現(xiàn)是匹中,NSNotificationCenter 對 observer 為弱引用,當observer 釋放掉的之后朱浴,下次 NSNotificationCenter 向 observer 發(fā)通知時吊圾,就會發(fā)現(xiàn) observer 已經(jīng)釋放掉了,會自動為 observer 移除通知翰蠢。
而通過 addObserverForName:object:queue:usingBlock: 這個方法注冊的通知仍然是強引用项乒。(因為沒有指定 observer 嗎? )
查到的相關信息:
截圖鏈接:https://useyourloaf.com/blog/unregistering-nsnotificationcenter-observers-in-ios-9/