Skip to content

说一下对 class_rw_t 结构体的理解? #50

@tbfungeek

Description

@tbfungeek

class_rw_t故名思议就是可读写的,它的结构如下所示:

struct class_rw_t {
    uint32_t flags;
    uint32_t version;

    const class_ro_t *ro; 

    method_array_t methods; 
    property_array_t properties;
    protocol_array_t protocols; 
    //...
}
  • ro 存放的是类的初始信息,是只读的,这部分信息最终会被拷贝到class_rw_t
  • methods方法列表,对于类对象这里存放的是对象方法,对于元类对象存放的是类方法
  • properties 属性列表
  • protocols 协议列表

分类中的方法列表,属性列表,协议列表在最后也会被拷贝到class_rw_t 对应的列表中。所以方法列表,属性列表,协议列表 的来源可以分成两类一类是来源于分类,一类是来源于class_ro_t.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions