【问题标题】:How to debug slow app launch如何调试缓慢的应用程序启动
【发布时间】:2017-05-24 15:19:41
【问题描述】:

启动我的应用程序时,我会在启动屏幕大约 2-3 秒后出现我的第一个 UIViewController。

有时我的 ViewDIdAppear 会在 UIViewController 实际出现之前被调用。

我有一个相当大的故事板(15 个屏幕)。

我从 UserDefaults 中检查了一些标志(用户已登录...),并且我初始化了 crashlytics 和 GCM。

所以标志和初始化似乎不是问题。

我检查了系统时差,似乎没问题。

关于调试缓慢启动的任何想法?

【问题讨论】:

  • 使用时间配置文件工具

标签: ios xcode swift debugging


【解决方案1】:

在 Xcode 中:产品 -> 配置文件

选择“时间分析器”

运行此工具将使您在程序中的每个方法上花费的时间,它会以分层结构为您提供这些信息。这应该让您了解大部分时间都花在了哪里。请记住,检测会增加额外的开销,因此绝对时间值可能不正确,但每种方法花费的时间比例应该是您调试此问题所需的。

这是一个看起来不错的tutorial(尽管在旧版本的 Xcode 上)展示了如何使用这个工具。

【讨论】:

    【解决方案2】:

    如果缓慢来自初始化时间,时间分析器将无法帮助您。在此期间,您的代码还没有运行,因此时间配置文件不会记录任何内容。 您可以通过转到“编辑方案”-> 运行-> 环境变量添加添加 DYLD_PRINT_STATISTICS 值为 1,让 xcode 打印出有关启动所需时间的统计信息。理想情况下,您希望启动时间小于 400 毫秒,即关于开场动画的长度。通过删除 use_frameworks,我能够将启动时间缩短一半!来自可可足类。而且我能够通过删除未使用的外部库将其再次减半。

    这里有一个关于这个主题的精彩苹果讲座: https://developer.apple.com/videos/play/wwdc2016/406/

    【讨论】:

    • 删除“use_frameworks”是什么意思?你不再使用 cocoapods 了吗?
    • 我从 pod 文件中删除了 use_frameworks! 行,该行告诉 cocoapods 将代码编译到框架而不是静态库中。
    猜你喜欢
    • 2010-11-08
    • 2018-02-20
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多