1

如果我试图减少我的应用程序的加载时间(即在初始视图控制器出现之前启动图像可见的时间),我应该把精力集中在哪里?我发现了一些处理长启动时间的问题(如this ),但它们似乎只关注第一个视图控制器的性能。我正在寻找有关应用程序生命周期一开始的更多信息,以及我可能能够清理哪些方法以改善启动图像持续时间。

我想application:didFinishLaunchingWithOptions:inAppDelegate可能会在那个时间窗口中被调用,但还有其他什么吗?假设来自 Xcode 模板的基本应用程序设计,没有不寻常的构建规则或类似的东西。除了didFinishLaunching第一个视图控制器的加载方法之外,我还有其他地方应该看吗?

4

2 回答 2

4

您可能应该学习使用 Instruments 来弄清楚您的程序在做什么。“Time Profiler”仪器将是一个很好的起点。

抽象地回答这个问题几乎是不可能的。真正的答案是“这取决于你的应用程序是如何编写的”。

系统将调用您的应用程序委托上的 init 方法,以及类方法 +initialize(如果您有 - 您可能没有。)

如果您使用故事板,系统将打开您的应用程序的故事板并确定哪个视图控制器是根视图控制器。它将加载该视图控制器并调用它。因此,调用该视图控制器所涉及的所有方法都会触发。

完成后,将调用您的 didFinishLaunching:withOptions 方法。您应该确保此方法不会执行任何需要很长时间的操作,例如从 Internet 下载内容。

如果您确实需要在启动时下载内容,则应该异步执行。

于 2013-12-16T19:27:25.030 回答
1

你是对的。还要确保你的第一个viewcontrollers pre-appearance 方法是轻量级的(例如init、viewDidLoad、viewWillAppear)。

要验证哪些方法真正有影响,您可以将 NSThreads sleepForTimeInterval 放在关键点。当然只有在调试/开发期间。

于 2013-12-16T19:22:00.370 回答