KVC 全称(key value coding ) 键值编码。是间接的访问对象属性的一种方式.
1.1 赋值
Person * person = [[Person alloc] init];
//person.name = @"dodo"; 通过setter方法为对象的属性赋值
//KVC 方式 给对象的当前属性赋值(间接) 其实也是通过setter 方法给对象赋值的</span>
[person setValue:@"odod" forKey:@"name"];
//按照路径赋值 类包含Card类 可以赋值
[person setValue:@"222" forKeyPath:@"card.id"];
1.2 取值
[person valueForKey:@"属性变量"];
[person valueForKeyPath:@"路径"];
2.1 可以利用KVC对工厂方法进行简洁
但是此方法的前提是
所使用条件为属性名与 返回的数据键值 一一对应
NSArray * array = [NSArray array];
for (NSDictionary * dic in array) {
[person setValuesForKeysWithDictionary:dic];
}
KVO 全称(key value observing ) 键值观察。观察者模式实现的一种方式。
1.1使用步骤
1.注册观察者
Person * p = [[Person alloc] init];
[p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
2.实现观察者对象的代理方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
}
3.移除观察者
[person removeObserver:self forKeyPath:@"name"];
观察者模式性能不是很好,使用完毕之后,一定要及时的去释放掉观察者对象。