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 内部信息只读 内部为类编译器生成的信息,不可添加和删除 |
本文详细解析了Objective-C运行时的类信息结构,包括只读的class_ro_t和可读写的class_rw_t。介绍了这两个结构体包含的关键字段,如方法列表、属性列表、协议列表及成员变量列表等,并解释了它们在编译时与运行时的不同作用。
423

被折叠的 条评论
为什么被折叠?



