42_iOS干货29_isa指针和superClass指针的总结

1,isa指针的作用

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

2,supreClass指针的作用

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

3,图表详解isa和superClass指针

  1. instance的isa指向class
  2. class的isa指向meta-class
  3. meta-class的isa指向基类的meta-class
  4. class的superclass指向父类的class,如果没有父类,superclass指针为nil
  5. meta-class的superclass指向父类的meta-class,基类的meta-class的superclass指向基类的class

4,子类实例对象调用父类对象方法的轨迹

  1. 实例对象isa指针 -> 类对象方法列表没有 -> 类对象的superClass指针 ->找到实例方法
  2. (找不到则继续到父类找,否则报经典错误cunrecognise selector sent to instance)

 

5,子类类对象调用父类类方法的轨迹

  1. 类对象isa指针 ->元类对象列表没有 ->元类对象的superClass指针 ->找到该类方法
  2. (找不到则继续从元类的父类找,特别注意NSObject元类对象的superClass指针,指向NSObjec的类对象,没有则报经典错误cunrecognise selector sent to class)
  3. 有可能调用类方法的时候,最后找到NSObject中的对象方法,存在这种可能性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值