KVC全称key value coding,提供了经过字符串Key来访问对象的属性的能力。ui
KVC机制是由NSKeyValueCoding协议定义的,在OC中,默认在NSObject的NSKeyValueCoding分类中实现了这个协议的方法。绝大多数类又是继承自NSObject的,因此几乎全部的类都得到了KVC的能力。spa
- (void)setValue:(nullable id)value forKey:(NSString *)key;
- (nullable id)valueForKey:(NSString *)key;
- (nullable id)valueForKeyPath:(NSString *)keyPath;
- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;
复制代码
例如:key --- value
1.去模型中查找有没有setValue:,直接调用这个对象setValue:赋值
2.若是没有setValue:,就在模型中查找_value属性
3.若是没有_value属性,就查找value属性
4.若是尚未就报错操作系统
通常来讲,想要访问和操做对象的属性,能够经过点语法直接操做,为何还须要KVC这种麻烦的方法呢。code