美文网首页iOS
KVC原理总结

KVC原理总结

作者: Sweet丶 | 来源:发表于2019-03-09 16:22 被阅读41次

iOS 的KVC技术比较常用,可在运行时动态地对一个对象的属性赋值,并且如果该key是有添加KVO监听, 也会触发这个监听。下面是KVC的实现原理总结。

一、KVC的设值原理


kvc设值原理.png

根据上图可以很清晰的知道KVC的设值过程。假设要设值的属性名为key
1> 当调用setValue:forKey:或者setValue:forKeypath:方法时,是首先查找对象方法 setKey:,如果有则直接调用,就此完成了KVC; 如果没有这个方法则查找_ setKey:方法调用,完成KVC。

2> 当上述2个方法都未找到,则调用对象的类方法 accessInstanceVariablesDirectly的返回值,如果为NO, 表示不允许访问成员变量,则抛出异常如上图; 如果为YES, 则查找是否存在可以设置的成员变量,按照_key_isKeykeyisKey顺序查找,找到了一个就不用继续往后查找了,直接对该成员变量赋值完成KVC,如果没有找到,则抛出如图异常。

二、KVC的取值原理

KVC的取值原理.png
KVC的取值过程如图,假设要取值的属性为key
1> 当调用valueForkey:方法时,首先按照顺序getKeykeyisKey_key查找对象方法,如果找到了方法,则调用方法拿到返回值即完成KVC取值.

2> 如果上述方法都没有找到,则调用对象的类方法 accessInstanceVariablesDirectly的返回值,如果为NO, 表示不允许访问成员变量,则抛出异常如上图; 如果为YES, 则查找是否存在可以取值的成员变量,按照_key_isKeykeyisKey顺序查找,找到了一个就不用继续往后查找了,直接取该成员变量完成KVC取值,如果没有找到,则抛出如图异常。

以上完结

相关文章

  • iOS原理篇(二): KVC实现原理

    KVC实现原理 什么是 KVC KVC基本使用 KVC 原理 总结 一 、 什么是KVC KVC的全称是Key-V...

  • iOS 关于KVC的一些总结(转)

    原文:iOS 关于KVC的一些总结 本文参考: KVC官方文档 KVC原理剖析 iOS KVC详解 KVC 简介 ...

  • KVC原理总结

    iOS 的KVC技术比较常用,可在运行时动态地对一个对象的属性赋值,并且如果该key是有添加KVO监听, 也会触...

  • 对KVC读取顺序的理解

    KVC用了这么久,是时候总结一下kvc的原理了。kvc通过key直接访问对象的属性,或者给对象的属性直接赋值,因此...

  • KVO和KVC的使用及原理解析

    一 KVO基本使用 二 KVO本质原理讲解及代码验证 三 KVC基本使用 四 KVC设值原理 五 KVC取值原理 ...

  • KVC

    一、KVC的原理(赋值取值过程) KVC相关常用的API KVC设置值的原理(setValue: forKey:的...

  • KVC/KVO原理

    KVC/KVO原理 KVC setValue:forKey原理 调用setValue:forKey:方法,会直接寻...

  • 05. KVC的使用,原理,本质

    问题 常用的KVC的API; KVC设置值原理图; KVC获取值原理图; 通过KVC修改属性会触发KVO吗? 答案...

  • 底层原理总结 — KVC

    1、KVC setValue: forKeyPath:的实现原理 2、KVC操作能不能触发KVO的监听 可以触发...

  • iOS 关于KVC的一些总结

    本文参考: KVC官方文档 KVC原理剖析 iOS KVC详解 KVC 简介 KVC全称是Key Value Co...

网友评论

    本文标题:KVC原理总结

    本文链接:https://www.haomeiwen.com/subject/qqgspqtx.html