2018-12-07

1、在KVO中,他是怎么知道监听的对象发生了变化?

KVO底层封装了KVC, KVC最重要的原理就是isa-swizzling ,我们在利用KVO的时候就传入了观察者,对象,以及观察的属性.我们在底层就通过对象的方法名得到环境参数,isa结合环境参数直接得出方法接口(SEL),最后得到该方法的函数实现(IMP).我们对应属性的变化,就通过对应的settr方法,来到IMP,就会消息转发从动态子类转发给父类.同时会触发KVO的 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;方法.拿到变化

你可能感兴趣的:(2018-12-07)