美文网首页
isa指针superclass

isa指针superclass

作者: 我真的不是张亮 | 来源:发表于2018-08-06 21:55 被阅读15次

    isa指针的指向

    实例对象的isa指针指向类对象

    类对象的isa指针指向元类对象

    isa的作用就是用来给实例找到各自的类对象的

    实例的isa指向自己的类对象,类对象的isa指向元类对象,元类对象的isa指向的是基类对象(student person 这样的类的元类对象的isa都是指向NSobject,并不是说student的元类对象就指向Person的元类对象,这是错误的)

    superClass指针的指向

    1、每个类对象都有一个superclass指针,这个指针的作用是为了帮助类找到自己的父类,比如实例对象 如果调用父类的方法,那么就是实例对象首先通过isa指针找到自己的类对象,然后在类对象中找到相应的方法,如果没找到,通过该类对象的superclass指针找到其父类的类对象寻找方法,一层一层往上找

    2、元类对象的superclass指针指向的是父类的元类对象,类的superclass指针指向的是父类的类对象

    3、如果你是找对象方法,那superclass就是在类对象中一层一层往上找,如果你找的是类方法,那就是superclass在元类对象中一层一层往上找,因为类方法存放在元类对象中

    4、每个类对象都有自己的元类对象,比如student有自己的元类对象,person也有自己的元类对象,他们不是同一个

    5、类对象的superclass指向的是父类的类对象,最后指向基类的类对象,由于基类没有父类,所以基类的superclass指向nil

    6、元类的superclass指向父类的元类对象,但是基类的元类对象没有父类,所以基类的元类对象的superclass、指向的是基类的类对象

    方法轨迹:

    1、对象方法

    根据isa指针找到自己的类对象,如果没有该对象方法,通过类的superclsass指针找父类的对象方法,直到基类,如果还没有,那就方法没找到,报错

    2类方法

    根据isa指针找到自己的元类对象,如果元类对象没有该类方法,就通过superclass指针找父类的元类,如果还没有,就一直找到基类的元类对象,如果还没有  注意,这里会去找基类的类对象中找,(类对象中存放的都是对象方法,苹果就是这么设计的),如果再没有,就会报错,没找到方法

    相关文章

      网友评论

          本文标题:isa指针superclass

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