【发布时间】:2015-06-10 23:51:04
【问题描述】:
在OS X v10.11 beta release notes 中,我发现以下内容:
NSNotificationCenter 和 NSDistributedNotificationCenter 不再向可能被释放的已注册观察者发送通知。如果观察者能够存储为调零弱引用,则底层存储将观察者存储为调零弱引用。或者,如果对象不能被弱存储(因为它有一个自定义保留/释放机制会阻止运行时能够弱存储对象)对象被存储为非弱归零引用。这意味着观察者不需要在他们的释放方法中取消注册。 [强调我的]
这对我来说没有意义。如果它是一个非弱引用,那么它不是一个强引用吗?所以 NSNotificationCenter 仍然是所有者,所以对象不会释放(直到手动取消注册),所以在这种情况下说它是“归零”是荒谬的。
如果这是指一种__unsafe_unretained 引用,那么问题是……那么 NSNotificationCenter 将如何避免向僵尸发送消息?
【问题讨论】:
标签: objective-c cocoa memory-management nsnotificationcenter osx-elcapitan