启动速度优化:
3个阶段1、pre-main,didFinishLaunchingWithOptions,首屏渲染
main阶段:
1、减少动态链接库,采用静态链接库方式。动态链接库有解耦和分模块的文件形式优点,但是在dyld分别从每个frameworks中加载,执行一系列的初始化,对io和cpu都有不小的开销
2、减少类方法+load,可以放到initialize中按需加载
3、控制全局变量的数量和类的数量 (效果较小)
didFinishLaunchingWithOptions
1、将非必须的sdk初始化移出didFinishLaunchingWithOptions,如果sdk必须在didFinishLaunchingWithOptions能用子线程初始化就用子线程,不行就用主线程异步初始化。
2、用户数据加载等基础服务精简化、异步化
首屏速度优化:
1、展示数据做持久化缓存,控制器viewdidload的时候先取缓存数据渲染页面再请求网络更新数据
2、图片使用sdwebimage等框架缓存
3、首页网络请求优化(http2.0 ,多个同样请求整合)
4、首页异步计算布局,尽量使用tableviewcell和colltionviewcell等复用机制,避免循环创建
5、对象懒加载,减少实例化时间
6、避免使用过多xib和xib约束