iOS基本功iOS面试总结iOS UI开发

iOS原理篇(二): KVC实现原理

2019-05-04  本文已影响61人  75b9020bd6db

KVC实现原理

一 、 什么是KVC

KVC的全称是Key-Value Coding,俗称“键值编码”,可以通过一个key来访问某个属性;

二 、 KVC基本使用

常用API

//设值
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
- (void)setValue:(id)value forKey:(NSString *)key;
//取值
- (id)valueForKeyPath:(NSString *)keyPath;
- (id)valueForKey:(NSString *)key;

三、KVC原理

setValue: forKey:原理:

setValue:forKey:
调用setValue:forKey:方法,首先会按照setKey_setKey:顺序查找方法:
1.找到了方法:直接传递参数调用方法设值
2.没找到方法:会去查看+(BOOL)accessInstanceVariablesDirectly方法的返回值,该方法表示是否直接设置成员变量的值。

valueForKey:原理:

valueForKey:
调用valueForKey:方法,首先会按照getKeykeyisKey_key顺序查找方法:
1.找到了方法:调用方法
2.没找到方法:同样会去查看+(BOOL)accessInstanceVariablesDirectly方法的返回值:

四、总结:

通过KVC修改属性会触发KVO吗?
会触发KVO,因为它内部会调用willChangeValueForKey:didChangeValueForKey:

上一篇下一篇

猜你喜欢

热点阅读