为什么KVO会保留所有NSMutableArray的对象?

时间:2011-06-19 04:53:30

标签: objective-c xcode key-value-observing key-value-coding retaincount

我正在努力弄清楚为什么KVO会保留所有正在观察的值。

场景:我有一个带弱引用的NSMutableArray。 (使用CFArrayCreateMutable和Callback设置为保留和释放都为NULL)。意味着任何添加的对象都不会被保留/释放。

我有一个NSArrayController,它观察NSMutableArray的值。

但是现在,NSMutableArray的每个对象也都被保留了。为什么会发生这种情况?如何阻止这种情况?

1 个答案:

答案 0 :(得分:1)

你怎么知道某些东西保留了这些物品?你不是在看-retainCount,是吗?如果是,请不要这样做。

如果您阅读了the way KVO works,您会发现在开始观察对象时会在幕后创建一些对象。为了成功使用KVO,你真的不需要知道或考虑这些对象 - 事实上,你可以知道的并不多 - 但是你也不应该担心除了你自己可能会或可能不会保留东西。