我很难弄清楚为什么 KVO 会保留所有正在观察的值。
场景:我有一个带有弱引用的 NSMutableArray。(使用 CFArrayCreateMutable 和 Callback 设置保留和释放都为 NULL)。这意味着添加的任何对象都不会被保留/释放。
我有一个 NSArrayController 观察 NSMutableArray 的值。
但是现在,NSMutableArray 的每个对象也都被保留了。为什么会发生这种情况,我该如何阻止这种情况?
我很难弄清楚为什么 KVO 会保留所有正在观察的值。
场景:我有一个带有弱引用的 NSMutableArray。(使用 CFArrayCreateMutable 和 Callback 设置保留和释放都为 NULL)。这意味着添加的任何对象都不会被保留/释放。
我有一个 NSArrayController 观察 NSMutableArray 的值。
但是现在,NSMutableArray 的每个对象也都被保留了。为什么会发生这种情况,我该如何阻止这种情况?
你怎么知道有什么东西在保留这些物体?你不是在看-retainCount,是吗?如果是,请不要这样做。
如果您阅读了 KVO 的工作方式,您会发现当您开始观察对象时,会在幕后创建一些对象。为了成功使用 KVO,你真的不需要知道或考虑这些对象——事实上,你知道的并不多——但你也不应该担心除了你自己可能会或可能不会保留谁事物。