【发布时间】:2013-08-12 23:08:16
【问题描述】:
我的应用中有一个检查器窗格,其中包含一堆控件。这些控件通过NSArrayController 绑定到我的模型对象。根据选择的对象类型,我将显示一组不同的检查器(就像 IB 的工作方式一样)。检查器控制器观察数组控制器的selection,以便在选择更改时加载所需的检查器集。
问题是旧的检查器显然没有被删除。即使检查器控制器没有对它们进行强引用并且它们已从其超级视图中删除,它们仍然会留下并将绑定错误记录到控制台:
[<Circle 0x102107df0> valueForUndefinedKey:]: this class is not key value
coding-compliant for the key width.
我的猜测是,NSArrayController 由于绑定而持有对控件的强引用。这可能吗?在从超级视图中删除控件之前,我是否必须手动删除绑定?如何正确实现这样的检查器窗格?
编辑:文档说
既不保留接收者,也不保留观察者。
所以我猜应该在移除控件时自动移除绑定,不是吗?
【问题讨论】:
标签: objective-c macos cocoa-bindings key-value-observing nsarraycontroller