kvc和kvo

KVC(Key-Value-Coding)内部的实现:一个对象在调用setValue的时候,

(1)首先根据方法名找到运行方法的时候所需要的环境参数。

(2)他会从自己isa指针结合环境参数,找到具体的方法实现的接口。

(3)再直接查找得来的具体的方法实现。

KVO(Key-Value-Observing):当观察者为一个对象的属性进行了注册,被观察对象的isa指针被修改的时候,isa指针就会指向一个中间类,而不是真实的类。所以isa指针其实不需要指向实例对象真实的类。所以我们的程序最好不要依赖于isa指针。在调用类的方法的时候,最好要明确对象实例的类名。

kvo实现监听流程。

KVO 可以监听单个属性的变化,也可以监听集合对象的变化。集合对象需要通过KVC 的 mutableArrayValueForKey:等方法获得代理对象(例如数组会创建:创建一个NSKeyValueSlowMutableArray中间对象),当代理对象的内部对象发生改变时,会回调 KVO 监听的方法。集合对象包含 NSArray 和 NSSet

你可能感兴趣的:(kvc和kvo)