2010-08-14 76 views
1

当我尝试在不使用Xcode的情况下运行Iphone应用程序时,出现了一些奇怪的行为。如果我通过选择Build &来运行它,运行在Xcode上运行得很好,但是如果通过断开USB电缆并点击Iphone上的应用程序来执行它,它会崩溃,从而产生无益的崩溃日志。通过Xcode运行Iphone应用程序并通过Iphone运行它的区别

这两种情况之间是否有可能导致此行为的差异?

回答

1

不同之处在于,如果您通过Xcode运行它,则会附加调试程序,并且不会应用很多限制。例如,如果一个应用程序启动,它必须响应几秒钟,否则它会被杀死。如果你使用调试器运行它,那么限制就会被解除。退出时相同:如果您点击主页按钮(在iOS < 4或iOS> = 4没有多任务处理),则应用程序将会退出5秒钟。调试器并非如此。

如果您从崩溃日志中发布错误消息,它可能会有所帮助。

+0

你是什么意思“必须回复几秒钟”?我们的应用正在进行一个长时间的初始化过程,启动时通常会持续20秒以上。也许我们的应用程序应该在后台线程而不是主线程中执行初始化过程? – Diego 2010-08-14 21:50:15

+0

我刚刚在Ipod Touch 2G中测试了我的应用程序,然后在Iphone 3GS中测试了它,并且它没有在3GS中崩溃,所以我猜想你在后台选择器中初始化的想法是最好的选择。我会尝试并报告 – Diego 2010-08-14 22:11:37

+0

'applicationDidFinishLaunching'或'application:didFinishLaunchingWithOptions:'必须及时返回。你可以简单地用'sleep'来测试。如果你插入一个'sleep(30)',你的应用程序如果没有被调试器运行就会被杀死。所以长时间运行的init任务应该在一个单独的任务中运行(或者'performSelectorInBackground:withObject:'并且一旦完成就发送一个通知)。这里要记住的一件事是,如果该后台任务需要修改GUI元素,则可能需要通过'performSelectorOnMainThread:withObject:waitUntilDone:'来完成。 – DarkDust 2010-08-15 09:18:20

0

从XCode运行应用程序后,你终止了它吗?使用iOS 4时,它将继续在后台运行,并且当您点击iPhone上的应用程序时,它就会显示在前台。

双击主页按钮,看它是否仍在运行。如果是这样,点击应用程序,直到出现减号并点击它。