ios - NSNotification 中心如何管理它观察对象?

标签 ios swift memory swift4 nsnotification

在老苹果 guid 中说: “例如,当您向通知中心注册一个对象时,通知中心会存储对该对象的弱引用,并在发布适当的通知时向其发送消息。当对象被释放时,您需要在通知中注销它中心以防止通知中心向不再存在的对象发送任何进一步的消息” 在 swift 4 中我们有两种观察方法: 1)NotificationCenter.default.addObserver(对象,选择器: 2) NotificationCenter.default.addObserver(forName: ... (with block)) 在第二种情况下,通知中心捕获 block 并保留其中的所有内容,因此在其中使用 self 时要小心

我试图找到关于在 1 种情况下观察者对象如何由通知中心管理的信息,如果你不注销时间?

最佳答案

根据 addObserver(_:selector:name:object:) 的文档:

If your app targets iOS 9.0 and later or macOS 10.11 and later, you don't need to unregister an observer in its dealloc method. Otherwise, you should call removeObserver(_:name:object:) before observer or any object passed to this method is deallocated.

并且由于调用了观察者的dealloc,所以这里没有内存泄漏。

关于ios - NSNotification 中心如何管理它观察对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51381136/

相关文章:

ios - 尝试构建一个简单的调谐器

swift - 如何为 NSButton 的标题设置自定义颜色和字体大小?(在 OS X NOT iOS 中)

Java:找出对象的内存大小?

java - 是否可以在 Java 中声明一个 1 位变量?

ios - uitableviewcells 中的重复内容

android - cocos2dx录制声音android/ios

ios - Core Plot 不画轴,为什么?

ios - 在 Swift 中使用多个 View Controller

ios - NSTemporaryDirectory 中的 Alamofire MultiPartForm 文件

c 程序 - 为什么整数占用 4 个字节,却以 8h 为间隔存储