一般而言,APP的启动时间,是从用户点击APP开始,到用户看到第一个界面之间的时间,总的来说,APP的启动主要包括三个阶段:
App启动主要分三个阶段
1.main函数执行前
2.main函数执行后
3.首页渲染完成后
main函数执行前
main函数执行前,系统主要会做下面几件事
-加载可执行文件(APP的.o文件集合)
-加载动态链接库,进行rebase指针调整和bind符号绑定
-ObjC的运行时处理,包括ObjC相关类的注册,category注册,selector唯一性检查等
-初始化,包括了执行+load()方法,attribute(constructor)修饰的函数调用,创建C++静态全局变量
相应的这个阶段对于启动速度优化来说,可以做的事情包括
1.减少动态库的加载,每个库本身都有依赖关系,苹果公司建议使用更少的动态库,并建议在使用动态库数量较大时,尽量将多个动态库进行合并,数量上苹果建议最多使用6个非系统动态库
2.减少加载启动后不去侃用的类或者方法