对App的冷启动的总结

app的冷启动:即app从来没有打开,从点击app到看到首屏为止的这个过程,叫做app的冷启动。

应用程序的入口为main()函数, 所以app的启动大致就分为以下几个阶段:

  • main()函数执行之前
  • main()函数执行之后到首屏渲染
  • main()首屏渲染之后

那么这三个阶段app分别都做了什么工作?

  • main()函数执行之前:
    1. 加载可执行文件,即Mach-O文件(ipa文件打开之后有个包,包里面包含了代码签名文件夹,一堆资源文件 和 一个二进制可执行文件)
    2. 加载动态链接解释器dyld,以及加载依赖动态库,包括系统和自己的,执行初始化方法。进行rebase指针调整和符号绑定。
    3. Objc运行时的初始化,包括Objc相关类的注册,category的注册,selector唯一性检查等。
    4. 初始化,包括+load方法的载入,attribute修饰的函数的调用,创建C++静态全局变量。
  • main()函数执行之后:指的是从main()函数执行开始,到appDelegatedidFinishLaunchingWithOpentions方法里首屏渲染相关方法执行完成。
  • 首屏渲染之后:指的是window.rootViewController设置 到函数Appdelegate didFinishLanuchingWithOptions方法域结束为止

你可能感兴趣的:(对App的冷启动的总结)