isa指针superclass

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指针找父类的元类,如果还没有,就一直找到基类的元类对象,如果还没有  注意,这里会去找基类的类对象中找,(类对象中存放的都是对象方法,苹果就是这么设计的),如果再没有,就会报错,没找到方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,890评论 0 9
  • 最开始让我有疑问的是在使用类方法,在控制台下仍然发现Class对应的有地址,类没有初始化,为什么会有地址?这个地址...
    轰炸机上调鸡尾酒阅读 3,025评论 0 0
  • 一,认识isa指针 首先我们要明确一点:在OC中,任何类的定义都是对象,类和类的实例在本质上没有区别,任何对象都有...
    舒城8中阅读 6,747评论 0 7
  • instance的isa指向class当调用对象方法时,通过instance的isa找到class,最后找到对象方...
    斑驳的流年无法释怀阅读 2,962评论 0 3
  • 数据显示,我国目前确诊的糖尿病患者已达1.1亿,更为可怕的是,全球成年人中约有一半处于糖尿病前期,也就是说这些人已...
    財知道阅读 5,581评论 0 0

友情链接更多精彩内容