有一位观察员说我需要在整个应用程序生命周期中使用它,我是否应该删除它?
我认为GC
会在应用关闭后删除它,我是对的吗?
如果是,那么什么时候将其删除?在deinit
?
答案 0 :(得分:5)
如果您正在为iOS 8及之前的版本提供支持。您必须删除dealloc
或viewWillDisappear
中的观察者。可以找到更详细的答案here。
如果您从iOS 9开始提供支持,则不再需要手动删除观察者。来自apple docs:
在OS X 10.11和iOS 9.0 NSNotificationCenter和 NSDistributedNotificationCenter将不再向其发送通知 可能被解除分配的已登记观察员。如果观察者能够 存储为底层存储将作为归零弱引用 将观察者存储为归零弱引用,或者如果是 对象不能被弱存储(即它具有自定义保留/释放 阻止运行时能够存储的机制 弱对象)它将对象存储为非弱的归零 参考。这意味着观察者不需要注册 在他们的解除分配方法。
可以找到更详细的解释here。
注意:但是在使用上面链接的文档中提到的基于块的通知时要小心。