【问题标题】:Why does -[NSObjectController selection] return a proxy object?为什么 -[NSObjectController selection] 返回一个代理对象?
【发布时间】:2012-11-26 06:43:47
【问题描述】:

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

【问题讨论】:

    标签: cocoa foundation


    【解决方案1】:

    Apple 的Cocoa Bindings Programming Topics 这么说:

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

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

    不管怎样,[objectController valueForKeyPath:@"selection.self"] 返回所选对象本身。

    【讨论】:

      【解决方案2】:

      Also:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-22
        • 2017-11-11
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多