最近面试遇到,很多问这个问题的,由于近一年都在写项目,对一些基础,尤其o c忘记了很多,回答的不好,现如今上班了,在工作之余写一些东西,出于自己的一点点理解 。
做项目其实和技术提高还是有区别的,做项目都是有一些常用sdk,长用方法,追求快,上线,很少去沉淀思考一些东西。下面说说这两个的理解。
kvc 键值编码(根据字符串来给属性赋值),set value for key or for keypath ,在调用这个方法时候,api会根据set key _key _iskey key iskey,的顺序,一个一个的来找属性赋值,找不到抛出异常,找到了直接返回结束。
去取值的话 value for key or keypath ,根据 getkey _key _ key , iskey 也是一样的 去取值 ,取不到就会崩溃,取到了返回 值 ,要注意的的是取值和赋值都需要对象类型 ,这个注意包装和类型转换
KVO 是基于KVC的一个键值观察者(通过keyPath来观察其值的变化 ) 其重写了set方法 ,当其观察的属性发生变化的时候,会调用其代理方法,触发回调。
网友评论