Cocoa 中很多图形对象都支持绑定. 我们把一个图形对象的属性(比如颜色, 或是值)和 一个key,比如fido,绑定起来.那么,图形对象就可以自动和那个key的值同步.
1. 定义数据 并且定义阿城城市可以写
-(int)fido{}
-(void)setFido:(int)value{}
或者写
@property (readwrite, assign) int fido;
@synthesize fido;
2. 通过interface build建立 控件与数据 之间的绑定
结论:
绑定后的控件如果发生奉新 那么setFido被调用,
只有调用 setFido 其他和fido绑定的控件才会得到更新
如果直接附值 比如 fido = 10; 绑定的控件是不会更新的 必须调用
[self willChangeValueForKey:@"fido"];
fido++;
[self didChangeValueForKey:@"fido"];
本质:
call stack:
[AppController setFido:]
[NSObject(NSKeyValueCoding) setValue:forKeyPath:]
实际上 控件与数据绑定就相当与控件注册了一个通知 当控件创建时 他告诉Controller 我会一直关注fido的变化 只要是 通过setFido 设置了fido 控件就会相应刷新
实质上就是添加了一个observer
[theAppController addObserver:self
forKeyPath:@"fido"
options:NSKeyValueObservingOld
context:somePointer];