谈谈KVO和KVC理解

2019-12-24  本文已影响0人  kakao6

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.如果要释放观察者时,要移除观察者。

上一篇 下一篇

猜你喜欢

热点阅读