前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kvo深入浅出举例

kvo深入浅出举例

作者头像
用户1219438
发布2018-02-01 11:43:29
5820
发布2018-02-01 11:43:29
举报
文章被收录于专栏:AliceAlice

一,概述

KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

二,使用方法

系统框架已经支持KVO,所以程序员在使用的时候非常简单。

1. 注册,指定被观察者的属性   

2. 实现回调方法 谁是观察者 这个回调方法就写在哪

3. 移除观察  最好在dealloc中写

三,实例:

假设一个场景,股票的价格显示在当前屏幕上,当股票价格更改的时候,实时显示更新其价格。

添加两个实体类 一个是股票Strock 一个是person

代码语言:js
复制
Strock.h
@interface Strock : NSObject
 {
     NSString *_name;
     float _price;
 }
@end
Strock.m
-(NSString *)description
 {
     return [NSString stringWithFormat:@"name:%@,price:%f",_name,_price];
}
person.m
//回调方法
 -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
 {
     NSLog(@"keyPath:%@,object:%@,change:%@",keyPath,object,change);
}
viewController.m
   self.person = [[Person alloc]init];
     self.strock = [[Strock alloc]init];
 
     //给属性赋值
     [self.strock setValue:@"baidu" forKey:@"_name"];
     [self.strock setValue:@155 forKey:@"_price"];
 
     //设置person为观察者
     [self.strock addObserver:self.person forKeyPath:@"_price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
 
 }
//拖进来一个点击 事件  当button点击的时候
 - (IBAction)priceClicked:(UIButton *)sender {
     NSInteger price = [[self.strock valueForKey:@"_price"]floatValue];
 
     [self.strock setValue:@(price+1) forKey:@"_price"];
 }
//移除观察者
 -(void)dealloc
 {
     [self.strock removeObserver:self.person forKeyPath:@"_price" context:nil];
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,概述
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档