KVC:setValue - setKey方法- _key 全局变量- key属性赋值 - valueForUndefinedKey 和setValue:forUndefinedKey
KVO: MyPerson 类的age属性发生改变时,系统会生成一个类,NSKVONotifying_MYPerson ,在setAge方法里面,调用[super setAge:]
[self willChangeValueForKey:];[self didChangeValueForKey:];
这两个方法内部会主动调用监听者内部的 -(v o id)observeValueForkeyPath这个方法。
KVO优点:
1.简单方法实现两个对象间的同步,例如model 和View
2.能够对非我们创建的对象,内部状态对象的状态做出响应,而且不需要改变内部的实现
3.能够提供观察的属性的最新值和先前值
4.keyPaths 可以观察嵌套对象
5.完成了对观察值的抽象,因为不需要额外的代码允许观察值能够被观察
缺点:属性必须是strings来定义
2.对属性重构将导致,我们的代码不可用
3.如果要释放观察者时,要移除观察者。
网友评论