Hon*_*ney 5 nsnotificationcenter ios swift ios8
在阅读iOS 9的这篇文章后,我知道您不再需要删除Observer.
但是对于iOS 8,您需要在viewController的deinit方法中删除Observer.但我无法理解它.如果一个viewController被释放,那么它的DEAD不是吗?为什么我们需要做一个removeObserver.它是一个观察者就像打电话给一个永远不会拿起电话的死人
我不明白的是什么?
rma*_*ddy 13
您在链接的文章中对此进行了详细说明:
通知中心现在保持对观察者的归零引用:
如果观察者能够存储为归零弱引用,则底层存储将把观察者存储为归零弱引用,或者如果对象不能被弱存储(即它具有可以阻止运行时的自定义保留/释放机制)从能够弱对象存储对象,它将对象存储为非弱的归零引用.
在iOS 9之前,NSNotificationCenter未使用weak引用实现,因此NSNotificationCenter不知道目标已被解除分配.它盲目地向任何已注册的目标发送通知.如果目标已被解除分配,这很糟糕(可能会崩溃).因此需要始终取消注册.
在iOS 9中,NSNotificationCenter开始使用弱引用.这意味着它现在知道其中一个已注册的目标是否已被解除分配.这意味着它不再尝试向解除分配的目标发送通知.这意味着您不再需要在取消分配之前显式取消注册目标.
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |