-
Notifications
You must be signed in to change notification settings - Fork 1
KVC
Kevin775263419 edited this page Mar 12, 2019
·
1 revision
- 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: | 查看accessInstanceVariablesDirectly方法的返回值(YES) | 调用报错NSUnknownKeyException |
---|---|---|
setKey:、_setKey:查看set方法 | _key、_isKey、key、isKey查找成员变量 | 没有找到成员变量 |
传递参数,调用方法 | 直接赋值 |
- 调用setValue:forKey的时候,第一次先去查看是否有setKey:、_setKey等set方法。如果有直接赋值,如果没有直接进行第二步。
- 如果accessInstanceVariablesDirectly的返回值为YES,也就是可以访问class的成员变量的返回值为YES,就会直接进行访问成员变量,如果返回的变量有这种一样的,key、_isKey、key、isKey。进行成员变量直接进行赋值。如果accessInstanceVariablesDirectly返回的值为NO,或者找不到类似的成员变量就会直接进行第三部。
- 报错处理,NSUnknownKeyException
- 同setValue:forKey的原理基本一致,setter方法,改为getter方法。其他的一样