第5章:运行时相关技术特性——二、对象、类对象与元类对象;三、消息传递

二、对象、类对象与元类对象

     1、类对象和元类对象是什么?两者之间有什么区别?

类对象存储实例方法列表等信息;元类对象存储类方法列表等信息。类对象通过isa指针可以找到元类对象。

     2、类对象调用类方法时如果元类及祖先元类中都没有该类方法,但是根类对象中有同名的实例方法,那么该实例方法会被调用吗?

会的。因为元类对象最终继承自根类对象。

 

三、消息传递

     1、消息传递的函数说明

不同的是:后者是从当前对象的父类对象开始方法查找,但是携带的对象仍是当前实例对象。

     2、消息传递过程

其中缓存查找是以SEL为key,通过hash函数找到对应的bucket_t结构,进而得到其IMP指针。具体如下图所示:

其中在当前类方法列表中查找过程为:对已排序好的列表,采用二分查找算法查找方法对应执行函数;对没有排序的列表采用一般遍历方法查找方法对应的执行函数。

其中的父类逐级查找过程如下:

     3、下面的面试题打印的信息是什么

答案:都是Phone

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值