KVC

    键值编码Key-Value Coding,一种非正式的协议,提供一种机制通过使用字符串来间接访问对象的属性,而不是通过我们明确的存取方式来获取。

    KVC的规则:

    当调用valueForKey、setValue:forKeyPath(二级属性)方法时,

    首先判断是否主动创建了属性,检查是否存在相应的key的set方法,如果存在,就调用set方法。

    如果没有,+(Bool)accessInstanceVariablesDirectly默认返回YES,就依次按照get<key>,<key>,is<key>查找。

    如果还没找到,继续按照其他类型规则去查找,如数组必须实现countOf<key>,objectIn<key>AtIndex:(NSInteger)index。

    若还是没有找到,就会报错,valueForUndefineKey:(不希望崩溃,就重写该方法,抛出异常,注意:nil执行任何方法都不会导致崩溃,因此可以返回nil。)

    设置:

    依次按照属性名查找:_key, key, isKey

    用途:

    1.知道别的类的私有属性名字,就可以通过valueForKey来改变其值。

    2.当服务器传过来的数据,可能某个没有,可以结合runtime方法混写的方式扩展setObject:forKey:方法。

    3.UI控件的属性代码修改样式

    4.表模型,字典转模型,模型转字典。

猜你喜欢

转载自blog.csdn.net/pdd_1128/article/details/80191060
KVC