美文网首页
通过KVC修改属性会触发KVO吗

通过KVC修改属性会触发KVO吗

作者: buding_ | 来源:发表于2024-03-25 18:42 被阅读0次

KVC:Key-Value Coding(键值编码),可以通过一个key来访问某个属性

KVC的方法有:
- (void)setValue:(nullable id)value forKey:(NSString *)key;
- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;
- (nullable id)valueForKey:(NSString *)key;
- (nullable id)valueForKeyPath:(NSString *)keyPath;

KVC能否触发KVO?

可以, 只要修改成功即会触发KVO;
因为KVC是会触发willChangeValueForKey:和didChangeValueForKey:

KVC的赋值过程:
     - (void)setValue:(nullable id)value forKey:(NSString *)key;
     1 按照setKey: _setKey的顺序,查找方法,若找到方法则传递参数调用方法
     2 查看+(BOOL)accessInstanceVariablesDirectly, 指示是否允许直接访问成员变量;
     3 若返回NO,则报错setValue:ForUndefinedKey:
     4 若返回YES,则按照_key,_isKey,key,isKey的顺序,查找成员变量,若找到则直接赋值,否则报错setValue:ForUndefinedKey:
KVC的获值过程:
     - (nullable id)valueForKey:(NSString *)key;
     1 按照getKey、key、isKey、_key的顺序,查找方法,若找到方法则传递参数调用方法
     2 查看+(BOOL)accessInstanceVariablesDirectly, 指示是否允许直接访问成员变量;
     3 若返回NO,则报错valueForUndefinedKey:
     4 若返回YES,则按照key,_isKey,key,isKey的顺序,查找成员变量,若找到则直接返回该值,否则

相关文章

  • 底层4:KVC

    面试题:通过KVC修改的属性会触发KVO吗? 会触发KVO。 面试题:KVC的赋值和取值过程是怎样的?原理是什么?...

  • 聊一聊KVC

    KVC的常见API 通过KVC修改属性会触发KVO吗? 可以。原理如下图: 过程描述:1、kvc会自动寻找setK...

  • 四.KVC

    通过KVC修改属性会触发KVO么?会触发KVO,就算是没有set方法,只有成员变量也会触发,因为kvc内部猜测应该...

  • iOS kvc

    1通过kvc修改属性会触发kvo么?会触发kvo KVC 键值编码(Key-Value Coding),它是一种通...

  • 05. KVC的使用,原理,本质

    问题 常用的KVC的API; KVC设置值原理图; KVC获取值原理图; 通过KVC修改属性会触发KVO吗? 答案...

  • iOS-底层原理(5)-KVC底层原理详解

    面试题 1. 通过KVC修改属性会触发KVO么? 会触发KVO 代码例子佐证 运行结果 2. KVC的赋值和取值过...

  • 5OC使用原理 -5- KVC底层原理详解

    面试题 1. 通过KVC修改属性会触发KVO么? 会触发KVO 代码例子佐证 运行结果 https://uploa...

  • KVC的本质

    通过KVC修改属性会触发KVO么? 会触发通过-_isKVOA方法判定是否有监听器(_isKVOA为KVO生成的N...

  • KVC

    通过KVC修改属性会触发KVO吗 KVC的赋值和取值过程是怎么样的 原理是什么 KVC 常见的API有 setVa...

  • KVC

    01基本使用 通过KVC修改属性会触发KVO么?会触发KVOKVC的赋值和取值过程是怎样的?原理是什么? KVC的...

网友评论

      本文标题:通过KVC修改属性会触发KVO吗

      本文链接:https://www.haomeiwen.com/subject/nrzftjtx.html