KVC

作者: 张_何 | 来源:发表于2019-12-11 17:52 被阅读0次
  • KVC 全称是 Key-Value Coding, 俗称键值编码,可以通过一个 Key 来访问某个属性
  • 常见 API 有:
    1、setValue:(nullable id)value forKey:(NSString *)key
    2、- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;
    3、valueForKey:(NSString *)key
    4、valueForKeyPath:(NSString *)keyPath
setValue: forKey: 原理
KVC 赋值原理.png
valueForKey:原理
KVC 取值原理.png
  • 通过 KVC 修改属性会触发 KVO吗?
    会触发 KVO

  • 通过 KVC 给成员变量赋值会触发 KVO 吗?
    会触发 KVO,通过 KVC给成员变量赋值的时候会触发willChangeValueForKey:didChangeValueForKey:方法,从而触发 KVO.

  • KVC 的赋值和取值过程是怎样的? 原理是什么?
    赋值 : setValue:forKey:方法内部会一次查找setKey:_setKey方法,如果找到了就传递参数调用方法,如果没找到会查看+(void)accessInstanceVariablesDirectly方法的返回值,如果返回值为 NO,则调用 setValue:forUndefinedKey:方法并抛出异常,如果返回值为 YES,则依次查找_key_isKeykeyisKey成员变量,找到了直接赋值,没找到则调用 setValue:forUndefinedKey:方法并抛出异常
    取值: valueForKey:方法内部会依次查找getKeykeyisKey_key 方法,如果找到直接调用方法,如果没找到方法会查看+(void)accessInstanceVariablesDirectly方法的返回值,如果返回值为 NO,则调用valueForUndefinedKey:方法并抛出异常,如果返回值是 YES,则依次查找_key_isKeykeyisKey成员变量,找到了直接取值,没找到则调用valueForUndefinedKey:方法并抛出异常.

相关文章

  • KVC详解

    KVC 目录结构KVC定义KVC取值和设置KVC使用keyPathKVC处理字典KVC作用 参考:iOS KVC和...

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

    KVC实现原理 什么是 KVC KVC基本使用 KVC 原理 总结 一 、 什么是KVC KVC的全称是Key-V...

  • iOS 关于KVC的一些总结

    本文参考: KVC官方文档 KVC原理剖析 iOS KVC详解 KVC 简介 KVC全称是Key Value Co...

  • KVC,KVO

    KVC , KVO KVC和KVO的区别及应用 KVC/KVO原理 1. KVC键值编码 KVC,即是指NSKey...

  • iOS 关于KVC的一些总结(转)

    原文:iOS 关于KVC的一些总结 本文参考: KVC官方文档 KVC原理剖析 iOS KVC详解 KVC 简介 ...

  • OC语法:KVC的底层实现

    一、KVC是什么二、怎么使用KVC三、KVC的底层实现四、KVC常见面试题 一、KVC是什么 KVC全称Key-V...

  • 19.iOS底层学习之iOS底层学习之KVC

    本篇提纲1、KVC的基本介绍2、KVC的API3、KVC的写入过程4、KVC的读取过程5、自定义KVC KVC的基...

  • iOS【KVC&KVO】

    kvc 1. KVC 1.1 KVC概念 KVC全称是Key Value Coding,定义在NSKeyValue...

  • ios开发UI篇—Kvc简单介绍

    一、KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC...

  • KVC的简单使用

    KVC字典转模型 KVC 中经常使用的就是字典转模型 KVC的大招 KVC设置对象属性及取值 KVC间接设置对象属...

网友评论

      本文标题:KVC

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