-
Key-Value-Coding
鍵值編碼
可以通過一個(gè)Key來訪問摸個(gè)屬性。
常見的API:
setValue:forKeyPath:setValue:forKey:valueForKeyPath:valueForKey:
-
實(shí)現(xiàn)原理
-
setValue:forKey:- 通過key 按照
setKey: 、_setKey:的順序查找方法。- 未查到,詢問是否可以直接訪問成員變量
accessInstanceVariablesDirectly:默認(rèn)返回YES。- 返回
YES。 按照setKey: 、_setKey:的順序查找方法修改成員變量。 - 返回
NO。 調(diào)用setValue:forUndefinedKey:方法報(bào)錯(cuò)。
- 返回
- 未查到,詢問是否可以直接訪問成員變量
- 查到后直接調(diào)用。
- 通過key 按照
-
valueForKey:- 通過key 按照
getKey: 、key: 、_Key: 、_isKey:的順序查找方法。- 未查到,詢問是否可以直接訪問成員變量
accessInstanceVariablesDirectly:默認(rèn)返回YES。- 返回
YES。 按照getKey: 、key: 、_Key: 、_isKey:的順序查找方法取值。 - 返回
NO。 調(diào)用setValue:forUndefinedKey:方法報(bào)錯(cuò)。
- 返回
- 未查到,詢問是否可以直接訪問成員變量
- 查到后直接調(diào)用。
- 通過key 按照
-