isa指针
instance 的 isa 指向 class 当调用对象方法时,通过 instance 的 isa 找到 class,最后找到对象方法的实现进行调用;
class 的 isa 指向 meta-class 当调用类方法时,通过 class 的 isa 找到 meta-class,最后找到类方法的实现进行调用;
class 对象的 superclass 指针
当 Student 的 instance 对象要调用 Person 的对象方法时,会先通过 isa 找到 Student 的 class,然后通过 superclass 找到 Person 的 class,最后找到对象方法的实现进行调用;
meta-class 对象的 superclass 指针
当 Student 的 class 要调用 Person 的类方法,会先通过 isa 找到 Student 的 meta-class,然后通过 superclass 找到 Person 的 meta-class,最后找到 类方法 的实现,进行调用;
isa、superclass总结
-
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找父类