KVO-实际应用
来源:互联网 发布:自然灾害数据查询 编辑:程序博客网 时间:2024/05/22 03:49
KVO: Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。
使用方法:
系统框架已经支持KVO,所以程序员在使用的时候非常简单。
1. 注册,指定被观察者的属性,
2. 实现回调方法
3. 移除观察
实际操作:
模拟场景,股票的价格显示在当前屏幕上,当股票价格更改的时候,实时显示更新其价格。
1.定义DataModel
- @interface StockData : NSObject {
- NSString * stockName;
- float price;
- }
- @end
- @implementation StockData
- @end
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- stockForKVO = [[StockData alloc] init];
- [stockForKVO setValue:@"searph" forKey:@"stockName"];
- [stockForKVO setValue:@"10.0" forKey:@"price"];
- [stockForKVO addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL];
- myLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 30 )];
- myLabel.textColor = [UIColor redColor];
- myLabel.text = [stockForKVO valueForKey:@"price"];
- [self.view addSubview:myLabel];
- UIButton * b = [UIButton buttonWithType:UIButtonTypeRoundedRect];
- b.frame = CGRectMake(0, 0, 100, 30);
- [b addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
- [self.view addSubview:b];
- }
- -(void) buttonAction
- {
- [stockForKVO setValue:@"20.0" forKey:@"price"];
- }
- -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
- {
- if([keyPath isEqualToString:@"price"])
- {
- myLabel.text = [stockForKVO valueForKey:@"price"];
- }
- }
- - (void)dealloc
- {
- [super dealloc];
- [stockForKVO removeObserver:self forKeyPath:@"price"];
- [stockForKVO release];
- }
0 0
- KVO-实际应用
- KVO机制的应用
- KVO的应用
- OC-KVO的应用
- KVC KVO 高阶应用
- html实际应用
- JavaScript实际应用:innerHTMl
- aop实际应用
- SOA 的实际应用
- SVN实际应用篇
- Filter的实际应用
- 反射的实际应用
- 考试--学习--实际应用
- 门禁的实际应用
- awk sed 实际应用
- PowerDesigner 实际当中应用
- highcharts 实际开发应用
- sqlcase when 实际应用
- 安卓颜色代码如何记忆
- Radiobutton样式
- handler.post 与线程
- 我曾经的伤感、过度在意和贪婪、恐惧
- iOS autolayout的Content Hugging 和 Content Compression Resistance
- KVO-实际应用
- ucenter应用同步登录的原理
- 修改 tomcat 内存
- ecshop接口之详情页图片显示问题
- java 自定义类库
- 采购订单价格只能从信息记录中带出
- 虚拟机Hadoop主机无法访问问题解决
- iOS沙盒路径的查看和使用
- NSLayoutConstraint-代码实现自动布局的函数用法说明