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