为什么 - [NSObjectController选择]返回一个代理对象?

时间:2012-11-26 06:43:47

标签: cocoa foundation

NSObjectController及其子类返回选择的代理对象。我想了解他们选择以这种方式设计的原因。文档似乎没有说明为什么会这样。

2 个答案:

答案 0 :(得分:4)

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

  

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

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

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

答案 1 :(得分:0)

Also

  

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