RuntimeiOS

Runtime - 2.0 内存模型

2021-05-12  本文已影响0人  ienos

我们先来看一下 object 和 class 之间的关系


objc_class

从上图中我们可以看到几个点

一、类对象

objc_class 继承 objc_object,可以看出类本身也是一个对象

struct objc_class : objc_object {
    // Class ISA;
    Class superclass;
    cache_t cache;             // formerly cache pointer and vtable
    class_data_bits_t bits;    // class_rw_t * plus custom rr/alloc flags
    ...
}

二、实例对象

struct objc_object {
private:
    isa_t isa;
    ...
}

三、isa

isa 就是一个指针

四、metaclass

当对一个实例对象发送一个消息时,会通过该实例对象的 isa 指针找到该实例对象的类,然后在类中找到对应的实例对象的方法;如果找不到方法,会去到 isa 指针的 superclass 中寻找

上一篇 下一篇

猜你喜欢

热点阅读