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