iOS App 启动都干了哪些事儿

App 启动我们指的是从用户点击 App 开始,到用户看到第一个界面这个阶段。总结来说,App 的启动主要包括三个阶段:

1、main() 函数执行前;

2、main() 函数执行后;

3、首屏渲染完成后;

main() 函数执行前

在 main() 函数执行前,系统主要会做下面几件事情:

  • 加载可执行文件(App 的 .o 文件的集合);

  • 加载动态链接库,进行 rebase 指针调整和 bind 符号绑定;

  • Objc 运行时的初始处理,包括 Objc 相关类注册、category 注册、selector 唯一性检查等;

  • 初始化,包括了执行 +load() 方法、attribute((constructor)) 修饰函数的调用、创建 C++ 静态全局变量;

main() 函数执行后

main() 函数执行后的阶段,指的是从 main() 函数执行开始到 appDelegate 的 didFinishLaunchingWithOptions 方法里首屏渲染相关方法执行完成。

首页的业务代码都是要在这个阶段,也就是首屏渲染前执行的,主要包括了:

  • 首屏初始化所需要配置文件的读写操作;

  • 首屏列表大数据的读取;

  • 首屏渲染的大量计算等;

首屏渲染完成后

这个阶段主要主要指的是非首屏其他业务服务模块的初始化、监听的注册、配置文件的读取等。从函数上来看,这个阶段指的就是截止到 didFinishLaunchingWithOptions 方法作用域内执行首屏渲染之后的所有方法执行完成。简单来说,这个阶段指从渲染完成时开始,到 didFinishLaunchingWithOptions 方法作用域结束时结束。

这个阶段用户已经能够看到 App 的首页信息了,所以优化的优先级排在最后。但是,那些会卡主主线程的方法还是需要最优先处理的,不然还是会影响到用户后面的交互操作。

参考资料:

iOS 开发高手课 -- 戴铭

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言:本文简单描述APP启动过程和监控,一些深入原理性的东西可能需要绕路了,站在大神的肩膀上,简单总结跟APP启动...
    梦蕊dream阅读 3,017评论 1 14
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,142评论 1 32
  • 一、冷启动和热启动 冷启动:App 点击启动前,它的进程不在系统里,需要系统新创建一个进程分配给它启动的情况。这是...
    Q海龙阅读 1,547评论 2 3
  • 爱情就是死循环,一旦执行就陷进去了;爱上一个人,就是内存泄漏–你永远释放不了;真正爱上一个人的时候,那就是常量限定...
    PetitBread阅读 1,132评论 0 2
  • 为富贵不知乐业 而今贫穷难耐凄凉 日出东山 早起早作 夜归寒门 晚宿晚息 纵使清贫苦饿 终不饱食 仍是笑对平日烦心...
    江南君阅读 216评论 5 6