iOS KVC和KVO
来源:互联网 发布:mac怎样删除文件 编辑:程序博客网 时间:2024/06/10 15:19
KVO:Key Value Observing, 键值监听, KVO提供了一种观察属性改变的机制, 一旦当某个属性改变了, 通过KVO观察到这种改变。
KVC- Key Value Coding 缩写
键值编码
作用: 提供了一种使用字符串作为关键字访问属性的机制
demo:
-(void)testKVO
{
// KVO的基本使用(注意事项)// 实例: 实现汽车的速度显示器// 如何实现: 当速度改变之后, 显示器同步显示// 项目中: 显示下载进度, 知道下载进度的更新car = [[Car alloc] init];car.speed = 0; //初始速度//如何监听属性变化---使用KVO//参数1: 有谁处理变化 self//参数2: 监听哪个属性的变化//参数3: 监听的选项[car addObserver:self forKeyPath:@"speed" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];//启动汽车car.speed = 10;car.speed = 20;// KVO的原理// 如果想给car类添加监听, 创建car类的子类, 重写car类setter方法, 一旦setter被调用的时候, 执行KVO对应的事件处理方法// kvo只有在通过setter修改属性的才有有效的
}
-(void)dealloc
{
//KVO监听结束之后必须移除监听, 否则会造成内存问题
[car removeObserver:self forKeyPath:@”speed”];
}
-(void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary )change context:(void *)context
{
NSLog(@”当前的速度是 %@”,[object valueForKeyPath:keyPath]);
}
-(void)testKVC
{
// 1.2 实例 Car类//使用Car第一种方式car = [[Car alloc] init];car.type = @"BMW";car.speed = 200.0;NSLog(@"type = %@, speed=%f",car.type,car.speed);//使用KVC访问[car setValue:@"Benz" forKey:@"typec"];NSLog(@"type = %@, speed=%f",car.type,car.speed);//KVC最常用 把字典中得数据转化为modelNSDictionary *dict = @{@"type":@"QQ",@"speed":@150};Car *newCar = [[Car alloc] init];for (NSString *key in dict) { //KVC的使用 [newCar setValue:dict[key] forKey:key];}NSLog(@"new car type = %@",newCar.type);//最常用的//作用: 把字典中每个键值对的数据赋值给对象中对应的属性[newCar setValuesForKeysWithDictionary:dict];//keyPath的使用// 遇到的情况: KVC操作的对象是多层的Engine *engine = [[Engine alloc] init];engine.power = 10;car.engine = engine;//需求: 利用kvc把car对象的engine对象的power设置为20//解决: 使用KeyPath[car setValue:@20 forKeyPath:@"engine.power"];//获取powerNSNumber *num = [car valueForKeyPath:@"engine.power"];NSLog(@"power = %f",num.doubleValue);
}
0 0
- ios kvc和kvo
- iOS KVC和KVO
- iOS KVC和KVO
- ios KVC和KVO
- iOS之KVC和KVO
- iOS之KVC和KVO
- ios中的KVC和KVO
- iOS之KVC和KVO
- iOS开发:KVO和KVC
- iOS开发 KVC和KVO
- IOS开发 - KVC 和 KVO
- iOS开发:KVO和KVC
- iOS之KVC和KVO
- 浅谈IOS KVC和KVO
- iOS中KVC和KVO
- iOS KVC 和 KVO 详解
- iOS中的KVC和KVO
- iOS kvc和kvo简介
- HDOJ 5252 追星族
- touch触摸滑屏
- 西楚战队强势出手控股韩国知名品牌“蜜都”
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- JAVA -- 关键字 abstract、static、final、native、synchronized
- iOS KVC和KVO
- 使用PowerDesigner画图教程
- MySQL之——优化篇
- Android开源项目分类汇总
- js遍历对象的属性并且动态添加属性并提交表单
- iOS 给类别里面添加属性
- NSURLConnection三种操作模式
- C json 服务端解析字符串,生成哈希表
- 静态路由与单臂路由