KVC KVO

KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时确定,这也是iOS开发中的黑魔法之一。很多高级的iOS开发技巧都是基于KVC实现的。
首先按get,,is的顺序方法查找getter方法,
首先按set,,is的顺序方法查找setter方法,

KVO 是通过 isa-swizzling 实现的
基本的流程就是编译器自动为被观察对象创造一个派生类,并将被观察对象的isa 指向这个派生类。如果用户注册了对某此目标对象的某一个属性的观察,那么此派生类会重写这个方法,并在其中添加进行通知的代码Objective-C 在发送消息的时候,会通过 isa 指针找到当前对象所属的类对象。而类对象中保存着当前对象的实例方法,因此在向此对象发送消息时候,实际上是发送到了派生类对象的方法。由于编译器对派生类的方法进行了 override,并添加了通知代码,因此会向注册的对象发送通知。注意派生类只重写注册了观察者的属性方法

*理论详情:*https://www.jianshu.com/p/b9f020a8b4c9
*代码实现:*https://juejin.im/post/5ac5f4b46fb9a028d5675645

猜你喜欢

转载自blog.csdn.net/heqiang2015/article/details/82968658