为什么我的应用程序即使在崩溃后也没有关闭

时间:2012-05-30 09:31:39

标签: iphone ios ipad ios-simulator

我正在开发一款iPad应用。有时它会崩溃(我知道原因)但我想知道为什么应用程序即使在崩溃后也不会关闭!当应用程序崩溃时,我得到了一些与控制台崩溃相关的错误,但应用程序没有关闭。它甚至出现在多任务栏中(我可以看到,当我按下主页按钮两次)。我想知道这有什么设置吗?或者这是正常行为?

3 个答案:

答案 0 :(得分:6)

如果从Xcode运行应用程序,调试器仍将附加,因此崩溃不会终止进程。您可以使用Xcode调试器来查看堆栈,检查变量等。只有当您在Xcode中停止应用程序时,该过程才会完全终止。

答案 1 :(得分:3)

@Mike Weller是对的。

模拟器的典型行为是在崩溃时不关闭应用程序,因为调试器被设计为在发生崩溃的代码点停止(出于显而易见的原因!)。

如果您想在设备上查看它以获得满意的效果。连接您的设备,通过xcode运行应用程序一次。关闭应用程序(停止在xcode上)。然后断开设备。

该应用程序现在将像任何其他普通应用程序一样安装在您的设备上。运行此应用程序,并做任何导致它崩溃的事情。您将看到应用程序将关闭,您将被扔回iphone跳板屏幕。

对于出现在多任务处理栏中的应用程序,此处已经提到多任务栏中应用程序的存在并不意味着它仍在运行。这对ios和android之间的架构至关重要。

多任务栏不是任务管理员。 ios的理念是用户不需要知道应用程序是否正在运行。他只需要知道他过去运行过哪些应用程序。

答案 2 :(得分:0)

它没有关闭的原因可能是应用程序实际上没有崩溃。

可能是因为您看到的打印是打印到日志的异常吗? 可能是你在打印后遇到这个例外吗?

像这样:

@try {
   [test characterAtIndex:6];
}
@catch (NSException * e) {
   NSLog(@"Exception: %@", e);
}

上面的代码不会崩溃,因为捕获了异常。捕获异常会告诉平台您已解决问题,因此应用程序不需要崩溃。

可能有很多其他原因,但是根据您提供的信息,这是我最好的猜测。 您可以发布您正在看到的日志打印,这肯定会提供更好的线索......