屏幕快照 2019-10-13 下午1.23.35.pngKVC即Key-value coding的缩写,一个非正式的Protocol,使用字符串(键)访问一个对象实例变量的机制,而不是通过调用Setter,Getter方法等显示的存取方式去访问。
1.KVC的使用
(1):动态的取值和设值
(2):用KVC来访问和修改私有变量
(3):Model和字典转换
(4):修改一些控件的内部属性(例如自定义UITextField中的placeHolderText)
2.KVC的底层实现(也是setValue:forKey:的原理)
屏幕快照 2019-10-13 下午1.31.00.png当一个对象调用setValue方法时,方法内部会做以下操作:
1). 检查是否存在相应的key的set方法,如果存在,就调用set方法。
2). 如果set方法不存在,就会查找与key相同名称并且带下划线的成员变量,如果有,则直接给成员变量属性赋值。
3). 如果没有找到_key,就会查找相同名称的属性key,如果有就直接赋值。
4). 如果还没有找到,则调用valueForUndefinedKey:和setValue:forUndefinedKey:方法。
这些方法的默认实现都是抛出异常,我们可以根据需要重写它们。
网友评论