///
Struct objc_class {
Class isa;
Class superclass;
cache_t cache; //方法缓存
class_data_bits_t bit; //用于获取具体的类信息
}
bit & FAST_DATA_MASK ——>
Struct class_rw_t{
uint32_t flags;
uint32_t version;
const class_ro_t * ro;
method_list_t * methods; // 方法列表
property_list * properties ;//属性列表
const protocol_list_t * protocols;//协议列表
Class firstSubclass;
Class nextSiblingClass;
Char *demangledName;
}
struct class_ro_t{
uint32_t flags;
uint32_t instanceStart;
uint32_t instanceSize; //instance对象占用的内存空间
#ifdef __LP64__
uint32_t reserved;
#endif
Const uint8_t * ivarlayout;
Const char * name; //类名
method_list_t * baseMethodList;
protocol_list_t * baseProtocols;
const ivar_list_t * ivars ; // 成员变量列表
const uint8_t * waekIvarLayout;
property_list_t * baseproperties;
}
///
class_rw_t
class_rw_t里面的methods,properties,protocols是二维数组,是可读可写的,包含了类的初始内容,分类内容
///
struct class_rw_t{
method_array_t methods; ——>method_list_ —->method_t
property_array_t properties;
protocol_array_t protocols;
}
///
Class_ro_t
Class_ro_t里面的baseMethodList,baseprotocols,ivars,baseProperties是唯一数组,是只读的,包含了类的初始内容
///
Struct class_ro_t{
method_list_t * baseMethodList;———>method_t;
protocol_list_t * baseProtocols;
const ivar_list_t * ivars;
property_list_t * baseProperties;
}
///
网友评论