天天看点

iOS Runtime面试题(类对象的数据结构?)

类对象的数据结构?

具体可以参看 

Runtime

 源代码。

类对象就是 

objc_class

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 用于获取地址

    class_rw_t *data() { 
        return bits.data(); // &FAST_DATA_MASK 获取地址值
    }
           

它的结构相对丰富一些。继承自

objc_object

结构体,所以包含

isa

指针

  • isa

    :指向元类
  • superClass

    : 指向父类
  • Cache

    : 方法的缓存列表
  • data

    : 顾名思义,就是数据。是一个被封装好的 

    class_rw_t

     。