Category的加载机制

一直在使用Category,但是对Category的机制不太了解,这里对Category的机制进行一个总结。

参考:传送门

总结

  1. Category是在程序启动时作用的, 并且是在 + load 方法调用前
  2. 如果类和Category都有+ load方法,这个+ load的加载顺序是:先类,后Category
  3. Category是运行时决议,Swift 的 Extension 是编译时决议
  4. Category是 runtime 在程序启动时,进行作用
    • 加载实例方法到 class 的函数列表中
    • 加载类方法到 meta class 的函数列表中
  5. Category增加方法,会更新 classmeta class 的函数列表,Category新增的方法在前, 原函数列表在后;
  6. Category如果新增了一个同名的方法,其实并没有替换到原来的函数,只是新增的同名方法在函数列表的前面,原来的方法在后面,所以有时会给人一个错觉——覆盖了方法

你可能感兴趣的:(Category的加载机制)