簡體   English   中英

NSNotification中心如何管理其觀察對象?

[英]How NSNotification center manage it observe objects?

在舊的蘋果guid中說:“例如,當您在通知中心注冊對象時,通知中心存儲對該對象的弱引用,並在發布適當的通知時向其發送消息。當對象被釋放時,您需要以便在通知中心注銷它,以防止通知中心將任何其他消息發送到不再存在的對象。“在swift 4中,我們有兩種觀察方法:1)NotificationCenter.default.addObserver(object,選擇器:2) NotificationCenter.default.addObserver(forName:...(帶塊))在第二種情況下,通知中心捕獲塊並保留其中的所有內容,因此在其中使用self時應格外小心

我試圖找到有關以下情況的信息:在1種情況下,觀察者對象是如何由通知中心管理的,它仍然是弱引用,還是變為強引用,如果不及時注銷,可能會導致內存泄漏?

根據addObserver(_:selector:name:object :)的文檔:

如果您的應用程序針對iOS 9.0和更高版本或macOS 10.11和更高版本,則不需要在其dealloc方法中注銷觀察者。 否則,應在釋放觀察者或傳遞給此方法的任何對象之前,調用removeObserver(_:name:object :)。

而且由於調用了觀察者的dealloc ,所以這里沒有內存泄漏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM