Category 底层原理

2020-09-24  本文已影响0人  weixhe

一个分类对应一个结构体指针对象,包含了分类中的一些信息

struct _category_t {
    const char *name;                               // 名称,一般是类名
    struct _class_t *cls;                           
    const struct _method_list_t *instance_methods;  // 分类中的对象方法列表
    const struct _method_list_t *class_methods;     // 分类中的类方法列表
    const struct _property_list_t *protocols;       // 分类中的协议列表
    const struct _prop_list_t *properties;          // 分类中的属性列表
    ...
}

程序在编译的时候就会创建分类对应的结构体指针变量,将信息存放在变量中,
但是只有在运行时才会将分类中的对象方法,类方法等合并到类对象,元类对象中

Category的加载处理过程

类扩展(Extension)和协议的区别:

分类的局限性

上一篇下一篇

猜你喜欢

热点阅读