NSObjectController とそのサブクラスは、選択のプロキシ オブジェクトを返します。彼らがなぜこのようなデザインを選択したのかを理解したいと思います。ドキュメントは、これがなぜなのかをあまり明らかにしていないようです。
2 に答える
Apple のCocoa Bindings Programming Topicsには、次のように書かれています。
You can establish bindings to a controller’s selection method or the selectedObjects method. However, you should avoid binding through the selectedObjects array, for example selectedObjects.name. Instead, you should use selection.name. Similarly, you should avoid observing keys through the array returned by selectedObjects. The proxy returned by selection is more efficient at managing changes in key-value observing as the selection changes.
I think you'll find that your answer lies in that final sentence.
For what it's worth, [objectController valueForKeyPath:@"selection.self"]
returns the selected object itself.
また:
多くの場合、選択によって返されるプロキシ オブジェクトではなく、コントローラーによって現在選択されているオブジェクトに直接アクセスする必要があります。NSObjectController とそのサブクラスは、まさにそれを可能にする selectedObjects メソッドを提供します。このメソッドは、レシーバーによって現在選択されているオブジェクトを含む配列を返します。NSObjectController の実装は、コンテンツ オブジェクトという単一のオブジェクトを含む配列を返します。