我现在必须手动在KVO中删除Observer吗?

时间:2019-03-24 07:01:00

标签: objective-c key-value-observing

我很困惑,现在必须手动删除KVO中的Observer吗?当我在网站上搜索此问题时,发现Do I have to removeObserver in KVO manually这个问题。因此,我尝试添加NSKVODeallocateBreak符号异常。但是,当我将观察者设置为nil而没有手动删除观察者时,什么也没发生。然后,我尝试观察NSKeyValueObservationInfo的调试内存图。

此屏幕快照是在添加观察者之后捕获的,我尝试更新测试的观察属性值。

adding an observer & test

然后我删除观察者。它表明内存中的某些内容消失了。

remove the observer

然后将观察者设置为nil。似乎什么都没发生。

set the observer to nil

之后,我再次初始化观察者,然后再次添加观察者。它表明内存中的某些内容再次出现。

initialize the observer again, and add observer again

最后,我只是将观察者设置为nil(没有removeObserver)。似乎与removeObserver的结果相同。

just set the observer to nil

那么,KVO有什么变化吗?还是我的测试不正确?

我的代码粘贴在这里:https://gist.github.com/kingcos/36575befa94a464d7aff689daa34f5d6

0 个答案:

没有答案