在老苹果柜上说: “例如,当您在通知中心注册对象时,通知中心会存储对该对象的弱引用,并在发布适当的通知时向其发送消息。当对象被释放时,您需要在通知中取消注册中心,以防止通知中心向该对象发送任何不再存在的消息” 在快速4中,我们有2种方法可以观察: 1)NotificationCenter.default.addObserver(object,选择器: 2)NotificationCenter.default.addObserver(forName:...(带块)) 在第二种情况下,通知中心捕获块将其保留并保留其中的所有内容,因此在其中使用self时应谨慎
我试图找到有关以下情况的信息:在1种情况下,观察者对象是如何由通知中心管理的,是否仍然为该对象获取弱引用,或者将其更改为强引用,如果不取消注册,可能会导致内存泄漏。时间?
答案 0 :(得分:1)
根据addObserver(_:selector:name:object:)的文档:
如果您的应用程序针对iOS 9.0和更高版本或macOS 10.11和更高版本,则无需在其dealloc方法中注销观察者。否则,应在释放观察者或传递给此方法的任何对象之前,调用removeObserver(_:name:object:)。
由于调用了观察者的dealloc
,因此这里没有内存泄漏。