我很困惑,现在必须手动删除KVO中的Observer吗?当我在网站上搜索此问题时,发现Do I have to removeObserver in KVO manually这个问题。因此,我尝试添加NSKVODeallocateBreak符号异常。但是,当我将观察者设置为nil
而没有手动删除观察者时,什么也没发生。然后,我尝试观察NSKeyValueObservationInfo
的调试内存图。
此屏幕快照是在添加观察者之后捕获的,我尝试更新测试的观察属性值。
然后我删除观察者。它表明内存中的某些内容消失了。
然后将观察者设置为nil。似乎什么都没发生。
之后,我再次初始化观察者,然后再次添加观察者。它表明内存中的某些内容再次出现。
最后,我只是将观察者设置为nil(没有removeObserver)。似乎与removeObserver的结果相同。
那么,KVO有什么变化吗?还是我的测试不正确?
我的代码粘贴在这里:https://gist.github.com/kingcos/36575befa94a464d7aff689daa34f5d6