一、Category与Extension的区别
- Extension是编译的时候,它的数据就已经包含在类信息中了
- Category是运行的时候,才会将数据合并到类信息中
二、Category中load方法
- load方法在runtime加载类、分类的时候调用
- load方法可以继承,但是一般情况下不会自己调用,都是系统主动调用
三、Category的加载过程
- 通过runtime加载某个类的所有分类
- 把所有Category的方法、属性、协议加载到一个大数组中
- 后面参与编译的Category数据,会放在数组的前面
- 将合并后分类的数据(方法、属性、协议)插入到原来的类数据前面
四、load方法调用顺序
- 先调用类的load
- 按照编译的先后顺序调用(先编译、先调用)
- 调用子类的load之前、会先调用父类的load
- 再调用分类的load
- 按照编译的先后顺序调用(先编译、先调用)










网友评论