当前位置: 移动技术网 > IT编程>移动>IOS > 【OC底层】KVC原理

【OC底层】KVC原理

25  人参与 | 时间:2018-11-06 | 我要评论

请记住本站备用网址:,收藏本站链接地址:http://www.pet1news.com

文章开讲啦,又名邳州站长网,国际包裹资费

 定义

kvc的全称是key-value coding,俗称“键值编码”,可以通过一个key来访问某个属性

 

常见的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:的原理

 

解析:当我们执行 setvalue 的时候,要会去判断这个对象有没有 setkey 和 _setkey 这两个方法,按顺序判断,如果有就调用,如果没有就会调用对象的accessinstancevariablesdirectly方法去判断能不能去访问成员变量,如果不能就直接抛异常,能的话,再去按顺序访问 _key、_iskey、key、iskey 的成员变量,找到就赋值,没找到就抛异常.

 

accessinstancevariablesdirectly炒股配资公司 :是否允许访问成员变量,默认yes

 这个方法有个应用场所就是如果你自己写框架,你的一些私有的变量不想被外部通过kvc的方式去修改,就可以重写这个方法,返回 no 即可!

valueforkey:的原理

 

炒股配资公司取值和赋值差不多,就是判断的获取方法多了两个而已。就是 getkey、iskey 

 

通过kvc修改属性值或者成员变量值会触发kvo吗? 

 答案是肯定可以的。因为无论你对象有没有set方法,kvc底层都会调用 willchangevalueforkey 和 didchangevalueforkey,上一篇我们说过只要手动调用这两个方法,kvc就会被调用。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

炒股配资公司相关的文章:

◎已有 0 人评论

移动技术网