ios知识碎片

load vs initialize

参考文章

+ (void)load当类或分类被添加到 Objective-C runtime 时被调用
+ (void)initialize在类或它的子类收到第一条消息之前被调用

下面是自行尝试结果:
类关系图:

+ (void)load调用顺序:父类 > 子类 > 分类
+ (void)initialize调用顺序:

  • 若父类之前initialize已经被调用过,那么只根据msg_send 调用本类initialize
  • 若父类之前initialize没有被调用过,那么继续看父类的父类,直到找到一个被掉过的类,然后依次从根据msg_send父类调用到子类

App启动流程

iOS armv7, armv7s, arm64区别与应用32位、64位配置

参考文章