美文网首页
KVC底层实现

KVC底层实现

作者: 夏天不冷 | 来源:发表于2016-09-11 22:57 被阅读0次
      拿字符串与当前类的属性进行匹配.如果匹配到,就给该属性赋值.  
       [flagItem setValue:obj forKeyPath:key];   
      (注意:这个字符串指的一般是plist文件中字典的key值,所以如果想字典转模型,在模型中声明的属性名称最好与plist文件中key值一致,这时才可以使用KVC)
      1.会找有没有跟key值相同名称的set方法,就会调用set方法,把obj传入   
      2.如果说没有set方法.那么它会去找没有相同名称,并且带有下划线的成员属性,如果有就会给该属性赋值.    
      3.如果也没有带有下划线的成员属性,有没有跟它相同名称的成员属性,如果有就会给该属性赋值.   
      4.如果还没有跟它相同名称的成员属性,就会调用setValue:(id)value forUndefinedKey: 
      5.如果没有实现setValue: forUndefinedKey:就直接报错 
    

    应用场景:一般利用底层实现的第一步,重写setter方法。


    ![ ![3.png](https://img.haomeiwen.com/i2824442/2069a598f0f26c84.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](https://img.haomeiwen.com/i2824442/70bf68445eedb725.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    相关文章

      网友评论

          本文标题:KVC底层实现

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