通过向对象发送 valueForKey / setValueForKey 设置对象内部变量的数值 参数为变量名的字符串格式
KVO会先在对象中查找对应的getter/setter方法 如果没有找到就直接查找同名的实例变量
如果要设置的值为int等基本类型 则需要先用NSNumber装箱 setValueForKey 会先开箱再赋值
KVC优点
1.可以进行整体的操作
例:数组a 存放n个对象 每个对象中都有一个实例变量cc 利用KVC操作a中的cc则会返回/设置 数组a中的对象cc
2.快速运算
例:[a valueforkey : "xx.@count"]
缺点:
KVC是利用字符串进行查找 效率掉 并且在编译器无法进行错误检查 如果提供了一个错误的路径 会在运行时报错
KVC批处理 :
dirctionaryWithValuesForKeys 该函数接受一个数组 返回一个字典
dic = [cars dirctionaryWithValuesForKeys : keys] 在cars中查找到keys 所有key 所对应的value 并返回一个保存了key 和 value 的字典
处理未定义的键: valueForUndefinedKey get未定义的键会走到这个函数 可以通过重写函数提供自己的处理