从启动到执行main函数之前的阶段
1.减少动态库的加载
2.将动态库转换成静态库
3.代码瘦身,减少objc类及category、方法、c++静态全局变量等。由于业务的复杂性,基本上没有优化空间。
4.控制C++全局变量的数量。
5.+load()方法
6.编译器clang插装优化
从执行main函数到用户可交互的阶段
这部分主要是在appdelegate里的didFinishLaunchingWithOptions方法里,首屏渲染前执行的,主要包括:首屏渲染需要的配置文件读、首屏大数据的读取、首屏渲染的大量计算等。
优化思路:梳理app启动所必需的初始化功能、首屏渲染所需要的初始化功能,然后将这些功能放到合适的阶段来进行处理。在mian()函数之后到首屏渲染前,只处理首屏相关的功能,其他非首屏业务的初始化、监听、配置文件读取等都放到首屏渲染之后处理。
可以从下面几个角度入手:
1.用纯代码的方式加载首屏,而非xib或storyboard
2.延迟暂时不需要的三方库加载
3.延迟执行部分业务逻辑及UI配置
4.延迟加载或懒加载部分视图
5.避免首屏出现大量本地或网络数据的读取
6.在release包中移除NSLog的打印
7.压缩图片大小(视觉可接受的范围内)
网友评论