category 是 Objective-C 2.0 之后添加的语言特性, category 的主要作用是为已经存在的类添加方法
- extension 在编译期决议,它就是类的一部分,在编译期和头文件里的 @interface 以及实现文件里的 @implement 一起形成一个完整的类,它伴随 类的产生而产生,亦随之一起消亡。
- 但是 category 则完全不一样,它是在运行期决议的。 就 category 和 extension 的区 别来看,我们可以推导出一个明显的事实, extension 可以添加实例变量,而
category 是无法添加实例变量的(因为在运行期,对象的内存布局已经确定,如果添 加实例变量就会破坏类的内部布局,这对编译型语言来说是灾难性的)。