iOS底层原理笔记 - isa指针

96 阅读1分钟

isa指针

Untitled.png

instance 的 isa 指向 class 当调用对象方法时,通过 instance 的 isa 找到 class,最后找到对象方法的实现进行调用;

class 的 isa 指向 meta-class 当调用类方法时,通过 class 的 isa 找到 meta-class,最后找到类方法的实现进行调用;

class 对象的 superclass 指针

Untitled 1.png

当 Student 的 instance 对象要调用 Person 的对象方法时,会先通过 isa 找到 Student 的 class,然后通过 superclass 找到 Person 的 class,最后找到对象方法的实现进行调用;

meta-class 对象的 superclass 指针

Untitled 2.png 当 Student 的 class 要调用 Person 的类方法,会先通过 isa 找到 Student 的 meta-class,然后通过 superclass 找到 Person 的 meta-class,最后找到 类方法 的实现,进行调用;

isa、superclass总结

Untitled 3.png

  • instanse 的 isa 指向 class

  • class 的 isa 指向 meta-class

  • meta-class 的 isa 指向基类的 meta-class


  • class 的 superclass 指向父类的 class

  • 如果没有父类,superclass指针为nil

  • meta-class 的 superclass 指向父类的 meta-class

  • 基类的 meta-class 的 superclass 指向基类的class


  • instanse 调用对象的方法轨迹

  • isa找到class,方法不存在,就通过superclass找父类

  • class调用类方法的轨迹

  • isa找meta-class,方法不存在,就通过superclass找父类