@interface MyClass {
NSString *_myString;
}
@property (copy) *myString;
@end
@implementation MyClass
@synthesize myString = _myString;
- (void)awakeFromNib {
self.myString = @"";
}
nib には、NSTextField と NSButton があります。テキスト フィールドの値バインディングは、myClass.myString に設定されます。テキスト フィールドにテキストを入力すると、変数 _myString が正しく更新されることを確認しました。
NSButton の Enabled バインディングは myClass.myString.length に設定されます。しかし、プログラムを起動すると、NSButton が有効になります。テキストフィールドに移動して何かを入力すると、ボタンは有効なままになります。次に、テキストフィールドからテキストを消去すると、ボタンが無効になります。
しかし、 awakeFromNib の呼び出しの後、ボタンが最初から無効にされないのはなぜですか? バインディングを反対方向 (myClass.myString --> NSTextField) に機能させるために追加の作業を行う必要がありますか? myString をプロパティとして宣言するとうまくいくと思いました。