iOS App启动优化思路

用户能感知到的启动时长主要是在“main函数执行前”“main函数执行后到首屏渲染完成”的阶段。

main函数执行前,优化思路如下:

(1)减少使用+load()方法

方案一:如果可能的话,将+load中的内容,放到渲染完成后做。

方案二:使用+initialize()的方法代替+load(),注意把逻辑移动到+initialize()时,要注意避免+initialize()的重复调用问题,可以使用dispatch_once()让逻辑只执行一次。

小知识点:+load()与+initialize()两者的区别?

+load()方法会在main()函数调用前就调用,而+initialize()是在类第一次使用时才会调用。

+load方法的调用优先级: 父类 > 子类 > 分类,并且不会被覆盖,均会调用。

+load方法是在main() 函数之前调用,所有的类文件都会加载,包括分类也会加载。

+initialize方法的调用优先级:分类 > 子类,父类 > 子类。(父类的分类重写了+initialize方法会覆盖父类的+initialize方法)

(2)合并多个动态库

苹果公司建议使用更少的动态库,并且建议在使用动态库的数量较多时,尽量将多个动态库进行合并。数量上,苹果公司最多可以支持6个非系统动态库合并为一个。

(3)优化类、方法、全局变量

减少加载启动后不会去使用的类或方法;少用C++全局变量;

main函数执行后,优化方案如下:

(4)优化首屏渲染前的功能初始化

main函数执行后到首屏渲染完成前,只处理首屏渲染相关业务。

首屏渲染外的其他功能放到首屏渲染完成后去初始化。

(5)优化主线程耗时操作,防止屏幕卡顿。

首先检查首屏渲染前,主线程上的耗时操作。将耗时操作滞后或异步处理。

通常的耗时操作有:网络加载、编辑、存储图片和文件等资源。

针对耗时操作做相对应的优化即可。

你可能感兴趣的:(iOS App启动优化思路)