美文网首页
KVC-设值

KVC-设值

作者: 一个半吊子工程师 | 来源:发表于2023-04-26 08:57 被阅读0次

    当调用setValue:forKey:设置属性value时,其底层的执行流程为:

    1. 首先查找是否有这三种setter方法,按照查找顺序为set<Key>:_set<Key>setIs<Key>
      1.1 如果有其中任意一个setter方法,则直接设置属性的value(要注意:key是指成员变量名,首字符大小写需要符合KVC的命名规范)
      1.2 如果都没有,则进入下一步 2

    2. 查找accessInstanceVariablesDirectly是否返回YES
      2.1 如果返回YES,则查找间接访问的实例变量进行赋值,查找顺序为:_<key>_is<Key><key>is<Key>

    • 如果找到其中任意一个实例变量,则赋值
    • 如果都没有,则进入最后一步 3
      2.2 如果返回NO,则进入最后一步 3
    1. 如果setter方法 或者 实例变量都没有找到,系统会执行该对象的setValue:forUndefinedKey:方法,默认抛出NSUndefinedKeyException类型的异常
    image.png

    相关文章

      网友评论

          本文标题:KVC-设值

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