category 是 OC 2.0后添加的新特性,主要作用是给已经存在的类添加方法,当然秉着类的单一职责原则和接口隔离原则我们通常会将不同功能的类扩展分别写在不同的文件中,这样不仅减少了单个文件的体积,同时可以对 category 进行按需加载。

category 的定义

所有的 OC 类和对象在 runtime 层其实都是 strcut,比如 objc_class、objc_object, 甚至 block(__block_impl) 还定义有自己的 isa 指针,category 也是如此。

1
2
3
4
5
6
7
8
typedef struct category_t {
const char *name;
classref_t cls;
struct method_list_t *instanceMethods;
struct method_list_t *classMethods;
struct protocol_list_t *protocols;
struct property_list_t *instanceProperties;
} category_t;
Continue reading
  • page 1 of 1
Author's picture

Bin Han

纸上得来终觉浅 绝知此事要躬行


Software Engineer


Hangzhou China