cocoa 绑定

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]; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值