1月22号 KVC KVO
2016-01-24 22:42
609 查看
KVC KVO
1.KVCKVC是Key-Value-Coding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性(实例变量)的机制。而不是通过调用Setter、Getter方法访问。当使用KVO、Core Data、CocoaBindings、AppleScript(Mac支持)时,KVC是关键技术。
Person * xw = [[Person alloc]init];
Dog *dg = [[Dog alloc]init];
//使用kvc设置成员变量的值
//使用之前必须得知道变量的名
[xw setValue:@"xiaowang" forKey:@"name"];
NSString * name = [xw valueForKey:@"name"];
NSLog(@"%@",name);
//设置对象里的某个类的某个属性
//确定类的对象是存在的
[xw setValue:dg forKey:@"dg"];
[xw setValue:@"wangwang" forKeyPath:@"dg.dogName"];
NSString * dname = [xw valueForKeyPath:@"dg.dogName"];
NSLog(@"%@",dname);
2.KVO
KVO,即:Key-Value-Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。
系统框架已经支持KVO,所以程序员在使用的时候非常简单。
1. 注册,指定被观察者的属性,
2. 实现回调方法
3. 移除观察
-(instancetype)init{
if (self =[super init]) {
self.card = [[[Card alloc]init]autorelease];
//监听器监听card中money的变化
[self addObserver:self forKeyPath:@"card.money"options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
}
return self;
}
//回调
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
NSLog(@"%d",[[change objectForKey:NSKeyValueChangeOldKey]intValue]);
NSLog(@"%d",[[change objectForKey:NSKeyValueChangeNewKey]intValue]);
}
//销毁
-(void)dealloc{
[self removeObserver:self forKeyPath:@"card.money"];
[super dealloc];
}
相关文章推荐
- Leetcode 52 N-Queens II 回溯搜索
- 操作系统学习笔记:分布式协调
- Log4j:log4j.properties 配置解析
- 名词解释之健康保险产品
- XCode4.3.3无证书无真机打包说明
- Linux学习
- Android笔记 - Binder之请求注册Service组件
- red hat 7.2安装libobasis5.0
- 常用html标签 —— 链接的颜色
- 【SQL server】 数据类型
- 简单的javascript--test2
- 添加水印
- redis快速入门教程
- 开始学习与进化之旅!
- Linux搭建SVN 服务器
- 验证码
- [项目一]第一天
- annotaton之@SuppressWarning
- 发明验证码的天才让全世界心甘情愿帮他干活
- HTTP状态吗详解