iPhone - 在辅助线程上崩溃不会影响主线程

时间:2011-05-19 12:49:51

标签: iphone objective-c multithreading xcode ios4

我注意到当我的应用程序在主线程上崩溃时,在设备上运行时,程序停止并且我在XCode上获得调用堆栈,因此我可以确切地看到崩溃发生的位置/原因。

但是,当副线程发生崩溃时,主线程(gui)继续正常运行,我只在控制台上收到有关崩溃的消息,而没有整个调用堆栈。

为了验证它,我调用了一个不存在的方法,一旦在主线程上一次在辅助线程上,并且实际上当辅助线程崩溃时我只在控制台中看到关于“无法识别的选择器”的消息。

有没有办法让辅助线程崩溃应用程序并显示完整堆栈?它对于调试目的非常有用。

由于

2 个答案:

答案 0 :(得分:1)

原因是我没有看到崩溃的原因是我曾试过并且发表声明......要小心他们。

答案 1 :(得分:0)

你应该试一试......抓住第二个线程的代码,然后在catch中转储完整的异常描述。

虽然不熟悉iPhone的内部结构,但请记住主线程只是一个运行各种方法的循环。对于系统在主循环上执行的任何代码,它很可能在try ... catch中执行该代码,以便它可以记录问题,并且可能优雅地退出应用程序。