我正在开发一个 iPad 应用程序。有时它会崩溃(我知道原因),但我想知道为什么应用程序即使在崩溃后也没有关闭!当应用程序崩溃时,我收到一些与控制台崩溃相关的错误,但应用程序没有关闭。它甚至出现在多任务栏中(当我按两次主页按钮时我可以看到)。我想知道是否有某种设置?还是这是正常行为?
3 回答
如果您从 Xcode 运行应用程序,调试器仍将附加,因此崩溃不会终止进程。您可以使用 Xcode 调试器查看堆栈、检查变量等。只有当您在 Xcode 中停止应用程序时,该进程才会完全终止。
@Mike Weller 是正确的。
模拟器的典型行为是在崩溃时不关闭应用程序,因为调试器被设计为在发生崩溃的代码点停止(原因很明显!)。
如果您想在设备上检查它是否满意。连接您的设备,通过 xcode 在其上运行该应用程序一次。关闭应用程序(在 xcode 上停止)。然后断开设备。
该应用程序现在将像任何其他普通应用程序一样安装在您的设备上。运行这个应用程序并做任何导致它崩溃的事情。您将看到应用程序将关闭,您将被扔回 iphone 跳板屏幕。
至于app出现在多任务栏中,这里已经提到,app出现在多任务栏中并不代表它还在运行。这是 ios 和 android 架构的重要区别。
多任务栏不是任务管理器。ios 的理念是用户不需要知道应用程序是否正在运行。他只需要知道他过去运行过哪些应用程序。
它没有关闭的原因可能是应用程序实际上没有崩溃。
可能是您看到的打印是打印到日志的异常吗?难道是你在打印后捕获了这个异常?
像这样:
@try {
[test characterAtIndex:6];
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
上面的代码不会崩溃,因为异常被捕获了。捕获异常是告诉平台您已经解决了问题,因此应用程序不需要崩溃。
可能还有很多其他原因,但根据您提供的信息,这是我最好的猜测。您可以发布您所看到的日志打印,这肯定会提供更好的线索......