美文网首页
KVC赋值、取值过程和异常处理

KVC赋值、取值过程和异常处理

作者: 小圆菜陪你财务自由 | 来源:发表于2018-10-12 16:17 被阅读0次

kvc的作用就不多说了,网上一大堆。这里主要介绍它的赋值和取值过程

赋值过程
  1. 先找相关方法 set<Key>:, _set<Key>:, setIs<Key>:
  2. 若没有相关方法 + (BOOL)accessInstanceVariablesDirectly,判断是否可以直接方法成员变量
  3. 如果是判断是NO,直接执行KVC的setValue:forUndefinedKey:(系统抛出一个异常,未定义key)
  4. 如果是YES,继续找相关变量_<key> 􏱞_is<Key>􏱞 <key> 􏱞is<Key>
  5. 方法或成员都不存在,setValue:forUndefinedKey:方法,默认是抛出异常
    相关实现可以参考demo
取值过程

取值的过程和赋值过程是一样的,可以通过demo查看

异常处理

异常主要有两种情况:

  1. 赋的值是空。如果给对象赋值nil没关系。可是给值类型(基本数据类型)赋值nil,会报错。但是不要怕,我们可以通过setNilValueForKey方法来捕获异常,当给非对象类型赋值为nil是会调用这个方法
  2. key不存在,这种情况又分为两种情况,第一:赋值的key不存在 ;第二:取值的key不存在。分别可以通过setValue:forUndefinedKey:方法和valueForUndefinedKey来捕获异常
上述两个方法只要在相应的类中进行重写即可

具体使用方法情可见demo

KVC正确性的验证

这里不做介绍,用的也少,有兴趣可以自己了解一下,
从validateValue方法入手。可以判断value的有效性,还有方法判断key的有效性。

相关文章

  • KVC赋值、取值过程和异常处理

    kvc的作用就不多说了,网上一大堆。这里主要介绍它的赋值和取值过程 赋值过程 先找相关方法 set:,...

  • iOS KVC赋值取值过程和异常处理

    赋值过程: 先找相关方法:set:,_set:,setIs: 若没有相关方法则:+ ...

  • KVC 赋值过程、取值过程

    赋值过程 1.先找相关方法 set:, _set:, setIs:2.若没有相关方法...

  • KVC

    一、KVC的原理(赋值取值过程) KVC相关常用的API KVC设置值的原理(setValue: forKey:的...

  • KVC

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

  • 03--KVC/KVO本质02--KVC 取值&赋值过程

    [TOC] 本章主要探索 KVC 的取值和赋值过程探索过程来源于官方文档:About Key-Value Codi...

  • KVC

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

  • KVC详解

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

  • KVC 的本质

    问?直接修改成员变量会触发KVO么?KVC的赋值和取值过程是怎样的?原理是什么? KVC的全称是Key-Value...

  • 底层4:KVC

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

网友评论

      本文标题:KVC赋值、取值过程和异常处理

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