0

NSObjectController 及其子类为选择返回一个代理对象。我想了解他们为什么选择这样设计。该文档似乎没有说明为什么会这样。

4

2 回答 2

4

Apple 的Cocoa Bindings Programming Topics有这样的说法:

您可以建立与控制器的选择方法或 selectedObjects 方法的绑定。但是,您应该避免通过 selectedObjects 数组进行绑定,例如 selectedObjects.name。相反,您应该使用 selection.name。同样,您应该避免通过 selectedObjects 返回的数组来观察键。随着选择的变化,选择返回的代理更有效地管理键值观察的变化。

我想你会发现你的答案就在最后一句话。

对于它的价值,[objectController valueForKeyPath:@"selection.self"]返回所选对象本身。

于 2012-11-27T01:47:12.093 回答
0

还有

通常你需要直接访问控制器当前选择的对象,而不是选择返回的代理对象。NSObjectController 及其子类提供了 selectedObjects 方法来允许您这样做。此方法返回一个数组,其中包含接收者当前选择的对象。NSObjectController 的实现返回一个包含单个对象的数组,即内容对象。

于 2015-05-27T01:35:54.447 回答