1.APP从桌面的icon被点击到app启动,详尽过程描述
app的启动可以分为main函数之前跟main函数之后两个部分
[1]main函数之前
A: 加载可执行文件
B: 加载动态链接器dyId
C:dyld递归加载动态链接库
(dyId的加载过程分为5个部分:加载动态链接库->rebase 所有图片-》绑定所有图片-》准备图片-》运行初始化)
[2]main函数之后
A:main() 执行UIApplicationMain()
B: UIApplicationMain()创建UIApplication
C: UIApplicationMain()创建AppDelegate并复制
D: UIApplication创建并管理RunLoop
E: UIApplication调用application:didFinishLaunchingWithOptions:
F: application:didFinishLaunchingWithOptions:创建并显示Application Window
G: Application Window设置根控制器Root View Controller
2.APP启动优化
既然app的完整启动分为main函数加载之前跟main函数加载之后两个部分,那么我们可以从这两个部分分别来做优化
[1]main函数加载之前可做的优化
A: 移除不必要的动态库以及图片等资源文件
B: 减少项目中的分类以及类扩展文件
C: 尽可能少的使用load方法,可使用initital方法替代
[2]main函数加载之后可做的优化
主要是对业务上的功能进行优化,比如:
A: 在启动方法中只执行必要的操作,一些可延后的操作不放在didfinishlauch中
B: 使用懒加载
C: 压缩图片资源