• KVO VS isa : KVO 建立在 KVC 之上


    Key-Value Observing (KVO) 建立在 KVC 之上,它通过重写 KVC 和监听 setter 方法,向外发送通知。

    https://blog.csdn.net/y550918116j/article/details/64906862

    猜测:KVO 保留的原来的类引用,用于返回class值;

    (lldb) po self.scrollView.class
    UITableView

    (lldb) po self.scrollView->isa
    NSKVONotifying_UITableView

    Automatic key-value observing is implemented using a technique called isa-swizzling. 

    The isa pointer, as the name suggests, points to the object's class which maintains a dispatch table. This dispatch table essentially contains pointers to the methods the class implements, among other data. 

    When an observer is registered for an attribute of an object the isa pointer of the observed object is modified, pointing to an intermediate class rather than at the true class. As a result the value of the isa pointer does not necessarily reflect the actual class of the instance. 

    You should never rely on the isa pointer to determine class membership. Instead, you should use the class method to determine the class of an object instance.


    - class { return (id)isa; }
  • 相关阅读:
    借用构造函数实现继承
    原型链
    创建对象 之 组合使用构造函数模式和原型模式
    6.原型对象的问题
    Spring MVC
    AOP
    谈谈对Spring IOC的理解
    Mybatis3.x与Spring4.x整合(转)
    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
    Appweb写法
  • 原文地址:https://www.cnblogs.com/feng9exe/p/8671550.html
Copyright © 2020-2023  润新知