内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

高级iOS:启动时间优化

2018-06-08 18:52 出处:清屏网 人气: 评论(0

时间分为两个部分 T1(main前) + T2(main后), {T1:系统环境布局时间:创建进程,加载解析可执行文件(库加载,堆栈环境配置等等), T2:从main函数到第一个界面显示时间}

1 库加载越多,启动越慢

2 Objc类越多,越慢

3 静态对象全局对象越多,启动越慢

4 Objc的 +load越多,启动越慢

我们比较能把控的点:load 和 T2时间上进行优化

每个objc类都有一个 +load函数,而它的调用优先级在调用main函数之前

通过以下操作可以论证上述的观点

优化3.png

启动优化2.png

编译,控制台输出如下

2018 -05-09 17 :02:43.610114+0800 demo [6371:689596] + [ViewController load]

2018 -05-09 17 :02:43.613407+0800 demo [6371:689596] main

lldb

)

结论1:尽量避免过多使用+load方法,可以使用+initlalize替代

在系统第一次使用到这个类的使用,才会使用到他的+(void)initlalize方法,比如:

【  A alloc】init】

//  第一次执行的时候,会先执行 A的nitialize  然后才alloc

结论2:减少- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions里面的操作,在启动页出现后再进行相关操作.(例如放到子线程中去执行)

关于每个objc文件的+load函数的执行循序

每个objc文件都有+load方法,那么他们的执行顺序是怎么样的?

优化4.png

此处的文件顺序,决定了+load的执行顺序

分享给小伙伴们:
本文标签: iOS启动时间

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号