load
- 调用顺序:父类->子类->分类 (不会覆盖);
- 多个分类情况下,compile sources <谁在前,先执行谁。多个分类都会被执行>;
- 子类覆盖load方法,父类覆盖了仍然会被调用;
- 仅调用一次(采用的是函数指针),如果【AA load】则执行发送消息哪一套机制;
- main前,所以尽管有锁,但仍然不安全。不建议在此初始化SDK的操作;
- 通常情况仅在此做方法交换的动作,一旦覆盖了load,则该类一定会被提前加载。而非懒加载;
initialize
- 调用顺序:父类->子类(如果有分类会覆盖“宿主类”);
- 多个分类情况下,compile sources <谁在后,仅执行最后的一个(分类方法倒序添加)>;
- 类初始化,会被调用一次。重复多次,会被调用多次;
- main后,所以为安全操作;
- 消息发送机制;
PS:子类、父类、分类A、分类B、全部覆盖了+load、+initialize;