- Launch概念
- warm launch
- cold launch
- resume
-
启动阶段
Phases of App Launch启动阶段.png
- demo
- 使用profile,app launch,record进行时间录制,逐步分析。
- 优化前2.4s,优化后0.3s
- 优化内容
- initialize - static runtime initialization
- 问题:Logger类,写了个复杂的load方法,load方法执行时间在main之前
- 解决方案:去除整个framework,xcode移除该framework。(也可以是将load内的内容,放到initialize方法中去)
- Launching - didFinishLaunchingWithOptions()
- 问题:在didFinishLaunchingWithOptions内,等待子线程执行完,子线程初始化了所有数据,且处理较慢
- 解决方案:只在didFinishLaunchingWithOptions初始化一部分数据,而且不等待子线程。
- Launching - initialFrameRendering
- 问题:首屏的界面涉及UITableView,涉及cellForRow方法,cellForRow里,加载了详情页的页面,太重了。
- 解决方案:去掉cellForRow对子页面的提前加载,改时机。
- initialize - static runtime initialization
- xctest
- 多次启动的效果
- 前后效果
网友评论