应用启动时间限制是否仅限于applicationDidFinishLaunching?

时间:2009-12-10 05:00:59

标签: iphone objective-c cocoa-touch

如果我的应用程序关闭因为加载时间很长,我可以将一些代码从applicationDidFinishLaunching中移入或调用到RootViewController中吗?意思是,(shutdown)计时器只查看applicationDidFinishLaunching?

2 个答案:

答案 0 :(得分:4)

我对此并不是100%肯定,但我相信当控制返回到运行循环并且应用程序可以接受用户输入时,计时器会停止,这通常是在applicationDidFinishLaunching方法的末尾。

但是,如果您在applicationDidFinishLaunching中加载视图,并且您的loadView或viewDidLoad需要很长时间,那么您的应用程序可能会被操作系统关闭。或者,您可以使用-performSelector:withObject:afterDelay:以延迟0调用该方法,并且该方法将在运行循环中排队并尽快运行。

如果在将控制权移交给用户之前必须进行大量处理,则应考虑在后台线程上执行该加载。

编辑:这是relevant Technical Q&A

答案 1 :(得分:1)

一般来说,任何耗时的东西都不应该在主线程上完成。你是applicationDidFinishingLaunching应该尽快返回。两者都是为了防止你的应用被SpringBoard杀死,同时也为用户带来了不错的体验。使用p erformSelector:withObject:afterDelay:或使用NSOperations将内容移出主线程。