KVO&KVC

作者: 乔克蜀黍 | 来源:发表于2021-09-24 14:53 被阅读0次
KVO

KVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变,被监听的类会创建继承于被监听类的子类,然后将被监听类的isa指针指向子类,子类的方法比父类多了class dealloc isKVO3个方法,在子类的set方法里会调用_NSSet*AndNotify方法
_NSSet*AndNotify的内部实现

  1. 调用willChangeValueForKey:
  2. 调用原来的setter实现
  3. 调用didChangeValueForKey:

didChangeValueForKey:内部会调用observer的observeValueForKeyPath:ofObject:change:context:方法

KVC

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

setValue:forKey:调用流程
  1. 按照setKey:、_setKey:
  2. 如果找不到setKey:、_setKey:方法,则查看accessInstanceVariablesDirectly方法的返回值(默认返回yes)
  3. 如果accessInstanceVariablesDirectly方法返回yes则按照_key、_isKey、key、isKey顺序查找成员变量,找到成员变量则赋值
  4. 如果accessInstanceVariablesDirectly方法返回no则调用setValue:forUndefinedKey:并抛出异常NSUnknownKeyException
valueForKey:调用流程
  1. 按照getKey、key、 isKey、_key顺序查找方法
  2. 如果没找打方法则查看accessInstanceVariablesDirectly方法的返回值(默认返回yes)
  3. 如果accessInstanceVariablesDirectly方法返回yes则按照_key、_isKey、key、isKey顺序查找成员变量
  4. 返回no调用valueForUndefinedKey:并抛出异常NSUnknownKeyException

相关文章

  • KVO&KVC

    什么是KVO? KVO是key-value observing的缩写 KVO是Object-C对观察者设计模式的又...

  • KVO&KVC

    KVO KVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变,...

  • KVO&KVC

    KVO 是(Key-valueObserve) Objective-C 对观察者模式(Observer Patte...

  • KVO&KVC浅谈

    在谈论KVO和KVC之前,先引出几个问题 问题一:iOS用什么方式实现KVO,你可以理解成KVO本质是什么? 1....

  • iOS知识体系总结-KVO&KVC

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-KVO&KVC iOS知识点/KVO&KV...

  • iOS底层原理-KVO&KVC

    KVO&KVC KVO:键值监听,可以用于监听某个对象属性值的改变 以上是最简单的KVO的使用,通过打印perso...

  • 第九章、KVO&KVC相关

    一、为什么都俗称KVO技术为黑魔法 内部神秘、外观简洁。 二、阐述系统KVO的实现原理 当观察一个对象时,一个新的...

  • iOS开发面试-八个考点, 带你全面掌握KVO&KVC

    原文地址[https://juejin.cn/post/7039296166789382174] 1. KVO的实...

网友评论

      本文标题:KVO&KVC

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