我遇到了这个代码的问题(我在didFinishLaunchingWithOptions中有它)。我需要它在应用程序继续之前完成内部代码的执行,因为它在核心数据中设置了一些关键的东西。它将此信息发送到后台并开始运行应用程序的其余部分,并且它没有足够快地完成数据的使用。
DataManager.getDataWithSuccess { (data) -> Void in
//code to execute here
}
如何强制应用程序在继续之前等待此代码完成?
答案 0 :(得分:2)
您不应该阻止didFinishLaunchingWithOptions
方法返回,以便它可以等待异步任务。至关重要的是要注意,在应用程序被操作系统杀死之前,只有有限的时间来完成启动。
我过去使用的一种方法,在等待异步事件发生之前需要在真正启动我的应用程序之前发生的是创建LaunchViewController
。此视图控制器的界面与应用程序的启动画面完美匹配。从最终用户的角度来看,您甚至无法告诉我们已经离开了闪屏。
在这里,我们会执行任何设置代码,例如要求您的DataManager
获取数据。然后,当它(以及任何其他设置操作)完成时,您只需呈现下一个视图控制器,就像在任何其他视图控制器之间移动一样。
这里一个巨大的积极影响是,您可以从启动画面中将很多漂亮的动画看到应用程序的第一个屏幕。