KVC:KeyValueCoding 直接通过键值访问对象的属性。而不是通过getter、setter
使用方法:
获取值:
valueForKey:传入NSString类型的名字
valueForKeyPath:传入NSString类型的路径:model.property
valueForUndefinedKey:它的默认实现是抛出异常,可以重写这个函数做错误处理
修改值
setValue: forKey:为属性赋值
setValue: forKeyPath:
setValue:forUndefinedKey:
setNilValueForKey:当对非类对象属性设置nil时,调用,默认抛出异常。
一对多关系成员的情况
mutableArrayValueForKey:有序一对多关系成员
mutableSetValueForKey:无序一对多关系成员
KVO:KeyValueObvering,键值观察编程
当对象属性值改变时会触发监听
使用方法
1、注册
2、实现监听方法
3、移除观察
例:model对象有属性name和age
给name添加监听
[self addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
实现监听方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"name"]) {
//do something
}
}