序
一直在使用Category,但是对Category的机制不太了解,这里对Category的机制进行一个总结。
参考:传送门
总结
- Category是在程序启动时作用的, 并且是在
+ load
方法调用前 - 如果类和Category都有
+ load
方法,这个+ load
的加载顺序是:先类,后Category - Category是运行时决议,Swift 的 Extension 是编译时决议
- Category是 runtime 在程序启动时,进行作用
- 加载实例方法到
class
的函数列表中 - 加载类方法到
meta class
的函数列表中
- 加载实例方法到
- Category增加方法,会更新
class
和meta class
的函数列表,Category新增的方法在前, 原函数列表在后; - Category如果新增了一个同名的方法,其实并没有替换到原来的函数,只是新增的同名方法在函数列表的前面,原来的方法在后面,所以有时会给人一个错觉——覆盖了方法