Почему -[выбор NSObjectController] возвращает прокси-объект?

NSObjectController и его подклассы возвращают прокси-объект для выбора. Я хотел бы понять, почему они выбрали именно такой дизайн. Документация, похоже, не проливает много света на то, почему это так.


person eyebrowsoffire    schedule 26.11.2012    source источник


Ответы (2)


Темы программирования Cocoa Bindings это сказать:

Вы можете установить привязки к методу выбора контроллера или методу selectedObjects. Однако следует избегать привязки через массив selectedObjects, например, selectedObjects.name. Вместо этого вы должны использовать selection.name. Точно так же вам следует избегать наблюдения за ключами через массив, возвращаемый selectedObjects. Прокси, возвращаемый выбором, более эффективно управляет изменениями в ключе-значении, наблюдая за изменением выбора.

Я думаю, вы обнаружите, что ваш ответ кроется в этом последнем предложении.

Что бы это ни стоило, [objectController valueForKeyPath:@"selection.self"] возвращает сам выбранный объект.

person Extra Savoir-Faire    schedule 27.11.2012

Также:

Часто вам нужно получить прямой доступ к объектам, выбранным в данный момент контроллером, а не к прокси-объекту, возвращенному выбором. NSObjectController и его подклассы предоставляют метод selectedObjects, позволяющий вам делать именно это. Этот метод возвращает массив, содержащий объекты, выбранные получателем в данный момент. Реализация NSObjectController возвращает массив, содержащий один объект, объект содержимого.

person 7stud    schedule 27.05.2015