5

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

4

3 回答 3

6

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

于 2012-05-30T09:47:31.940 回答
3

@Mike Weller 是正确的。

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

如果您想在设备上检查它是否满意。连接您的设备,通过 xcode 在其上运行该应用程序一次。关闭应用程序(在 xcode 上停止)。然后断开设备。

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

至于app出现在多任务栏中,这里已经提到,app出现在多任务栏中并不代表它还在运行。这是 ios 和 android 架构的重要区别。

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

于 2012-05-30T11:32:12.763 回答
0

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

可能是您看到的打印是打印到日志的异常吗?难道是你在打印后捕获了这个异常?

像这样:

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

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

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

于 2012-05-30T09:43:10.023 回答