KVC底层实现

2016-09-11  本文已影响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)
上一篇下一篇

猜你喜欢

热点阅读