一 应用场景
- 修改内部/隐藏变量
- model和字典互相转换
- 对容器所有元素发送同一消息:当对容器类使用KVC时,
valueForKey:
将会被传递给容器中的每一个对象,而不是容器本身进行操作。结果会被添加进返回的容器中,这样,开发者可以很方便的操作集合来返回另一个集合。(如:数组深拷贝)
kvc函数
简单集合运算符共有@avg, @count , @max , @min ,@sum5
种@distinctUnionOfObjects
@unionOfObjects
它们的返回值都是NSArray,区别是前者返回的元素都是唯一的,是去重以后的结果;后者返回的元素是全集。但仅返回值的数组
@distinctUnionOfArrays
@unionOfArrays
@distinctUnionOfSets
@distinctUnionOfArrays:该操作会返回一个数组,这个数组包含不同的对象,不同的对象是在从关键路径到操作器右边的被指定的属性里
@unionOfArrays该操作会返回一个数组,这个数组包含的对象是在从关键路径到操作器右边的被指定的属性里和@distinctUnionOfArrays不一样,重复的对象不会被移除
@distinctUnionOfSets和@distinctUnionOfArrays类似。因为Set本身就不支持重复。
二 应用顺序
-
get<Key>,<key>,is<Key> getter
-
BOOL Int 会转换成 NSNumber getter KVC
-
如果没有回继续查找countOf<Key>,objectIn<Key>AtIndex <Key>AtIndexes countOf<Key> 会 他们会返回NSKeyValueArray是 NSArray的子类
之后会跑类方法
+ (BOOL)accessInstanceVariablesDirectly 如果返回YES 那么就查找成员变量_<key>,_is<Key>,<key>,is<Key> -
如果+ (BOOL)accessInstanceVariablesDirectly 返回NO 那么就运行 valueForUndefinedKey: 默认异常