Runtime相关

2019-03-24  本文已影响0人  TAsama

Runtime

isa指针

在32为或64位架构下,isa指针分为指针形isa和非指针形isa
指针型isa的值代表Class的地址
非指针型isa的值的部分代表Class的地址

isa指针的指向
method_t

method_t结构体封装了函数四要素,即:

其中名称通过SEL方法选择器表示,返回值和参数则由“Type Encodings”类型的字符串表示,函数体则指代了IMP函数指针。


对象的数据结构

对象、类对象、元类对象

关于类对象的isa指针指向可以用下图表示:


isa指向表

消息传递机制

可以用下图展示消息传递的流程:


消息传递

注意:在消息缓存中查找是通过哈希表来快速定位函数指针,而在当前类方法列表中查找时,对于已经排序好的列表使用二分查找,而对于没有排序的列表采用一般遍历查找发。

消息转发流程
消息转发流程.jpg

我们可以在

ressolvelinstanceMethod方法中为对象动态添加方法,已达到处理消息未被实现的问题。

上一篇 下一篇

猜你喜欢

热点阅读