KVC 使用
KVC的全稱是Key-Value Coding,俗稱“鍵值編碼”,可以通過一個(gè)key來訪問某個(gè)屬性
常見的API有
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
- (void)setValue:(id)value forKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;
- (id)valueForKey:(NSString *)key;
setValue:forKey:的原理

image.png
注:accessInstanceVariablesDirectly 方法的默認(rèn)返回值是YES
setValue:forKey: 方法會(huì)先調(diào)用 setKey: 方法,如果沒有,則調(diào)用帶下劃線的 _setKey: 方法。如果這兩個(gè)方法都不存在,則調(diào)用 accessInstanceVariablesDirectly,accessInstanceVariablesDirectly 返回 NO 則拋出異常,accessInstanceVariablesDirectly 返回 YES,則按照 _key、_isKey、key、isKey 的順序查找成員變量,找到成員變量,則直接賦值。
valueForKey:的原理

image.png