Objective-C class_rw_t class_ro_t

apple objc开源代码

class_rw_t

rw: readwrite

在objc-runtim-new.h 文件中 源码如下:

struct class_rw_t {
    // Be warned that Symbolication knows the layout of this structure.
    uint32_t flags;
    uint32_t version;

    const class_ro_t *ro;

    method_array_t methods;
    property_array_t properties;
    protocol_array_t protocols;

    Class firstSubclass;
    Class nextSiblingClass;

    char *demangledName;

    ...
};

class_rw_t 中包括

method_array_t 方法数组

property_array_t 属性数组

protocol_array_t 代理数组

class_ro_t

class_ro_t

ro: readonly

在objc-runtim-new.h 文件中 源码如下:

struct class_ro_t {
    uint32_t flags;
    uint32_t instanceStart;
    uint32_t instanceSize;
#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 * weakIvarLayout;
    property_list_t *baseProperties;

    method_list_t *baseMethods() const {
        return baseMethodList;
    }
};

class_ro_t 中包括

name 类名

method_list_t 方法列表 

property_list_t 属性列表

protocol_list_t 代理列表

ivar_list_t 成员变量列表

class_rw_t

rw readwrite 内部信息可读可写的

内部包含的信息来源时runtime时动态添加的,比如分类中的方法会在运行时添加到method_array_t中

class_ro_t

ro readonly 内部信息只读

内部为类编译器生成的信息,不可添加和删除

猜你喜欢

转载自blog.csdn.net/wangchuanqi256/article/details/88955164
今日推荐