如果我的应用程序关闭因为加载时间很长,我可以将一些代码从applicationDidFinishLaunching中移入或调用到RootViewController中吗?意思是,(shutdown)计时器只查看applicationDidFinishLaunching?
答案 0 :(得分:4)
我对此并不是100%肯定,但我相信当控制返回到运行循环并且应用程序可以接受用户输入时,计时器会停止,这通常是在applicationDidFinishLaunching方法的末尾。
但是,如果您在applicationDidFinishLaunching中加载视图,并且您的loadView或viewDidLoad需要很长时间,那么您的应用程序可能会被操作系统关闭。或者,您可以使用-performSelector:withObject:afterDelay:
以延迟0调用该方法,并且该方法将在运行循环中排队并尽快运行。
如果在将控制权移交给用户之前必须进行大量处理,则应考虑在后台线程上执行该加载。
编辑:这是relevant Technical Q&A。
答案 1 :(得分:1)
一般来说,任何耗时的东西都不应该在主线程上完成。你是applicationDidFinishingLaunching应该尽快返回。两者都是为了防止你的应用被SpringBoard杀死,同时也为用户带来了不错的体验。使用p erformSelector:withObject:afterDelay:
或使用NSOperations
将内容移出主线程。