iOS KVC

KVC

KVC全稱key value coding,提供了經過字符串Key來訪問對象的屬性的能力。ui

KVC機制是由NSKeyValueCoding協議定義的,在OC中,默認在NSObject的NSKeyValueCoding分類中實現了這個協議的方法。絕大多數類又是繼承自NSObject的,因此幾乎全部的類都得到了KVC的能力。spa

KVC的使用方法

- (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;
複製代碼

KVC內部實現的步驟

例如:key --- value
1.去模型中查找有沒有setValue:,直接調用這個對象setValue:賦值
2.若是沒有setValue:,就在模型中查找_value屬性
3.若是沒有_value屬性,就查找value屬性
4.若是尚未就報錯操作系統

KVC有什麼用?

通常來講,想要訪問和操做對象的屬性,能夠經過點語法直接操做,爲何還須要KVC這種麻煩的方法呢。code

  1. 能夠操做對象的私有屬性,而直接用點語法沒法作到。(這就爲咱們提供了訪問和操做系統類的私有屬性的能力,例如更改系統控件的私有屬性)
相關文章
相關標籤/搜索