详解App的启动过程

  • 解析 Info.plist
    (1)加载相关信息,例如闪屏。
    (2)沙箱(SandBox)建立、权限检查。
  • Mach-O 加载
    (1)如果是胖二进制文件,寻找合适当前 CPU 类别的部分。
    (2)加载所有依赖的 Mach-O 文件(递归调用 Mach-O 加载的方法)。
    (3)定位内部、外部指针引用,例如字符串、函数等。
    (4)执行声明为 attribute((constructor)) 的C函数。
    (5)加载分类(Category)中的方法。
    (6)C++ 静态对象加载、调用 Objc 的 +load 函数。
  • 程序执行
    (1)调用 main()
    (2)调用 UIApplicationMain()
    (3)调用 applicationWillFinishLaunching 代理方法。
    后续继续完善...

你可能感兴趣的:(详解App的启动过程)