KVC和KVO

作者: xymspace | 来源:发表于2020-06-14 14:59 被阅读0次

    kvc和kvo的本质与底层调用

    KVO
    • 项目中使用的KVO
      1. 监听键盘的弹起收回
      2. 给webView添加加载进图条
    • 添加了kvo的对象:
      1. 其isa指针,不再指向原来的class,而指向NSKVONotifying_class,其class的isa也指向自己的meta-class
      2. 方法实现也不再指向类对象的方法,而对应foundation'_NSSetIntValueAndNotify'函数

    补充:代理效率比kvo高。代理不会生成额外的信息。

    KVC
    • 通过KVC修改属性,内部会触发KVO监听
      • setValue:forKey:原理
        • 按照setKey: --->_setKey:顺序查找方法
        • 没有找到方法,查看accessinstanceVariablesDirectly方法的返回值,返回YES,才可以访问成员变量,NO,抛出异常undefinedKey。
        • 查找成员变量按照 _key、_isKey、key、isKey 的顺序查找。找不到,抛出异常undefinedKey。

    相关文章

      网友评论

          本文标题:KVC和KVO

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