cocoa 绑定

来源:互联网 发布:linux c 多线程 socket 编辑:程序博客网 时间:2024/04/30 15:56

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:forKey:]

[NSObject(NSKeyValueCoding) setValue:forKeyPath:]

 

实际上 控件与数据绑定就相当与控件注册了一个通知 当控件创建时 他告诉Controller 我会一直关注fido的变化 只要是 通过setFido 设置了fido 控件就会相应刷新

 

实质上就是添加了一个observer

[theAppController addObserver:self 

                   forKeyPath:@"fido" 

                      options:NSKeyValueObservingOld 

                      context:somePointer]; 

原创粉丝点击