栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

KVC /KVO的底层原理和使用场景

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

KVC /KVO的底层原理和使用场景

KVC(key value coding)
(一)原理

(1)赋值时首先判断有没有对应的set方法,如果有直接赋值
(2)如果没有set方法,查看有没有和key一样的成员变量,如果有,直接赋值
(3)如果没有成员变量,查找有没有对应的属性,如果有,直接赋值
(4)如果都没有,调用setvalue forUndefinedKey方法
(二)使用场景
(1)赋值

- (void)setValue:(nullable id)value forKey:(NSString *)key;- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;- (void)setValue:(nullable id)value forUndefinedKey:(NSString *)key;- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *, id> *)keyedValues;

(2)取值

- (id)valueForKey:(NSString *)key;- (id)valueForKeyPath:(NSString *)keyPath;- (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys;

(3)字典转模型

- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *, id> 

(4)模型转字典

- (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys;
KVO

(一)实现原理
(1)对象添加observer后,runtime会自动生成一个中间类,让对象的isa指针指向这个中间类(继承自原类),
(2)中间类会重写set方法,并在调用元set方法的前后添加willChangevalue和didChangevalue方法,继而通知observer
如果需要手动触发kvo,只需调用willChangevalue和didChangevalue方法即可




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/363269.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号