删除观察员是否必须(必要)?

时间:2017-01-17 05:17:09

标签: ios swift nsnotificationcenter

有一位观察员说我需要在整个应用程序生命周期中使用它,我是否应该删除它? 我认为GC会在应用关闭后删除它,我是对的吗? 如果是,那么什么时候将其删除?在deinit

1 个答案:

答案 0 :(得分:5)

如果您正在为iOS 8及之前的版本提供支持。您必须删除deallocviewWillDisappear中的观察者。可以找到更详细的答案here

如果您从iOS 9开始提供支持,则不再需要手动删除观察者。来自apple docs:

  

在OS X 10.11和iOS 9.0 NSNotificationCenter和   NSDistributedNotificationCenter将不再向其发送通知   可能被解除分配的已登记观察员。如果观察者能够   存储为底层存储将作为归零弱引用   将观察者存储为归零弱引用,或者如果是   对象不能被弱存储(即它具有自定义保留/释放   阻止运行时能够存储的机制   弱对象)它将对象存储为非弱的归零   参考。这意味着观察者不需要注册   在他们的解除分配方法。

可以找到更详细的解释here

注意:但是在使用上面链接的文档中提到的基于块的通知时要小心。