KVC底层实现原理,当一个对象调用setValue:forKey的方法时,方法内部会做以下操作:
1.检查该类是否存在相应key的set方法,如果存在,就调用set方法;
2.如果set方法不存在,就会查找与key相同名称且带下划线的成员属性,如果有,则直接给成员属性赋值;
3.如果没有找到_key,就会查找相同名称的属性key,如果有就直接赋值;
4.如果还没找到,则调用valueForUndefinedKey:和setValue:forUndefinedKey:方法。
KVC底层实现原理,当一个对象调用setValue:forKey的方法时,方法内部会做以下操作:
1.检查该类是否存在相应key的set方法,如果存在,就调用set方法;
2.如果set方法不存在,就会查找与key相同名称且带下划线的成员属性,如果有,则直接给成员属性赋值;
3.如果没有找到_key,就会查找相同名称的属性key,如果有就直接赋值;
4.如果还没找到,则调用valueForUndefinedKey:和setValue:forUndefinedKey:方法。