KVC,KVO
来源:互联网 发布:cntv中国网络电视台5 编辑:程序博客网 时间:2024/06/05 08:27
KVC Key Value Coding 键值编码,以字符串作为key, 访问对象属性的一种方式
KVC作用:
1)动态地访问特性:现在有许多字母,我们要统计某个字母有没有出现。这些字母被存储在一个NSArray里,遍历Array,当遇到"a"这个字母时,就将一个名为"a"的属性设为@"yes":[self setValue:@"yes" forKey:s];
2)处理多层嵌套的属性
Engine *e = [[Engine alloc] init];
e.power = 1000000;
car.engine = e;
//修改power
[car setValue:@(2000000) forKeyPath:@"engine.power"];
3)字典转化为对象
NSDictionary *dict = @{@"type":@"dongfeng",@"speed":@(20000)};
Car *newCar = [[Car alloc] init];
[newCar setValuesForKeysWithDictionary:dict];
NSLog(@"%@ %f",newCar.type,newCar.speed);
4)取值: [car valueForKey:@"type"]
5)它可以支持KVO
KVO:键值监听,即Key-Value Observation,即监视属性的变化并进行一些操作。
作用:汽车显示频显示当前车的速度,实时监控, 车速一旦变化, 立马显示
用法:
添加监听:
[newCar addObserver:self forKeyPath:@"speed" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:nil];
//参数1: 表示哪个属性改变了
//参数2: 哪个对象的属性改变了
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
double speed = [[object valueForKeyPath:keyPath] doubleValue];
NSLog(@"speed = %f",speed);
}
//释放
-(void)dealloc{
[newCar removeObserver:self forKeyPath:@"speed"];
}
- KVC、KVO
- KVO/KVC
- kvc 、kvo
- KVO/KVC
- KVC/KVO
- KVO/KVC
- KVC、KVO
- KVO/KVC
- KVO/KVC
- KVO/KVC
- KVC/KVO
- KVO/KVC
- KVO&KVC
- KVO & KVC
- KVC、KVO
- KVO/KVC
- kvo,kvc
- KVC、KVO
- codeblocks使用小技巧
- iOS 背景动态图
- HDU 5944 Fxx and string(数学)
- 2016 杭州·云栖大会 PDF 下载 | 那伊抹微笑
- 短信验证的实现
- KVC,KVO
- HDU5917 Instability
- Android 第三方网络框架汇集
- Python & Adb Shell & UiAutomator -- 微信自动发朋友圈/点赞/...
- 怎样控制文章长度利于网站SEO
- OpenCV Tutorial: Harris 角點
- 深度学习系列之图像分类
- Docker 学习笔记
- android layerdrawable的用法