浅谈ios之kvc底层执行原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈ios之kvc底层执行原理相关的知识,希望对你有一定的参考价值。

参考技术A 开发中常用赋值方式:1、直接通过setter方法赋值;2、通过kvc赋值

KVC:键值编码,使用字符串访问对象的属性

使用方式:

例如对key为name赋值、取值
当通过setValue:forKey:赋值时,其底层流程为:
1、查找是否有setName,_setName,setIsName的set方法,如果有任意一种,直接赋值。若没有进入第二步
2、查找accessInstanceVariablesDirectly是否允许访问成员变量,若为YES,则查找实例变量_name,_isName,name,isName,查到任意一个则进行赋值
3、setter方法和实例变量都没有找到,系统会执行该对象的setValue:forUndefinekey:抛异常

当通过valueForKey取值时,其底层执行流程为:
1、查找是否有getName,name,isName,_name的get方法,若找到则根据找到的属性值类型,返回对应结果。若没找到进入第二步
2、检查InstanceVariablesDirectly是否为YES,查找_name,_isName,name,isName,查到直接获取对应的值
3、getter方法和实例变量都没找到,系统会执行valueForUndefinekey方法抛异常

以上是关于浅谈ios之kvc底层执行原理的主要内容,如果未能解决你的问题,请参考以下文章

浅谈 Spring 事务底层原理

iOS底层探索之KVC

浅谈Runloop

浅谈ArrayList的底层扩容的原理

iOS底层KVC原理

iOS底层KVC原理