Как говорит @nick, вам нужно Key-Value-Observing.
[arrayController addObserver:self
forKeyPath:@"selection.isLocked"
options:NSKeyValueObservingOptionNew
context:@"this_context"]
Затем, когда isLocked изменяет, -observeValueForKeyPath: ofObject: change: context: метод, который вы добавили в viewController, будет вызываться(при условии, что вы манипулируете только isLocked совместимым способом KVC).
Параметр options позволяет при необходимости настраивать, какие именно условия будут вызывать уведомление, и какие данные отправляются вместе с уведомлением.Параметр context предназначен для того, чтобы вы могли различать уведомления, которые вы зарегистрировали для получения, и уведомления, которые ваш суперкласс зарегистрировал для получения.Это необязательно.
Похоже, что привязки могут быть полезны для синхронизации двух значений.Однако это совсем не то, что они делают .
Да, многие вещи создают впечатление, что это то, что они делают, и мало кто говорит, что это не так.не то, что они делают, также многие люди считают, что это то, что они делают, но нет, вы не можете использовать их для этого.
Только несколько классов поддерживают привязки ( они перечислены здесь), затем , и это важный бит , эти классы поддерживают только привязку именованных привязок , и эти привязки не являются переменными экземпляра.Например, NSTextField имеет привязку ' fontFamilyName ', но NSTextField не имеет свойства 'fontFamilyName' или переменной экземпляра, даже производной.NSTextField имеет свойство «isBordered», но не привязку, поэтому вы не можете связать «isBordered».
Это ничего не значит для «связывания» произвольного свойства произвольного класса.