一 KVC
KVC:键-值编码是一种间接访问对象的属性使用字符串来标示属性,而不是通过调用存取方法,
直接或通过实例变量访问的机制。
基本调用包括setValue:forKey和valueForKey:两个方法:
setValue:forKey:方法以字符串的形式向对象发送消息,可以设置对象实例变量的值。第一参数为要设置的值
,第二个参数为字符串,是对象的属性名称或者实例变量名称。
valueForKey:方法以字符串的方式向对象发送消息,用于获取对象中实例变量的值。参数为字符串,是对象的
属性名称或者实例变量名称。
案例:
//新建一个学生类
//在Student.h文件中
//在Student.m文件中
//main函数
结果:
接下类我们来看键路径
使用setValue:forKeyPath:和valueForKeyPath:方法来访问键路径。
案例:
//声明一个Teacher类
结果:
总结:键值编码支持指定键路径,对于对象中实例变量或属性是另外一对象的情况非常实用。
二 KVO
KVO:键值观察是基于键值编码(KVC)的一种技术,利用键值观察可以注册成为一个对象的观察者,在该对象
的某个属性变化时收到通知。
编写键值观察分为三步:
1.注册成为观察者;
2.观察者定义KVO的回调;
3.移除观察者;
案例:
//在Student.h文件中
//在Student.m文件中
//实现方法
//在main函数中
结果:
注意:谁成为了监听者,监听方法就写在那个类文件中;
案例:
让Teacher类成为监听者
在Teacher.h文件中
在Teacher.m文件中
在main函数中
结果:
总结:
[obj addObserver:self
forKeyPath:@"memberVariable"
options:(NSKeyValueObservingOptionOld|
NSKeyValueObservingOptionNew)
context:nil];
第一个参数:常为self,接收通知的对象,即观察者。
第二个参数:键路径参数,要观察的键路径。
第三个参数:标识KVO希望变化如何传递给观察者,这些值可以使用“|”进行多选。
第四个参数:上下文内存区,通常为nil。