2011-05-19 92 views
0

我注意到,當我的應用程序在主線程上崩潰時,在設備上運行時,程序停止,我得到XCode上的調用堆棧,所以我可以看到確切地說發生碰撞事故的地點/原因。iPhone - 在輔助線程上崩潰不影響主線程

但是,當次要線程發生崩潰時,主線程(gui)繼續正常運行,並且我只在控制檯上收到有關崩潰的消息,而沒有整個調用堆棧。

爲了驗證它,我調用了一個不存在的方法,一次在主線程上一次在輔助線程上,事實上,當輔助線程崩潰時,我只能在控制檯中看到關於「無法識別的選擇器」 。

有沒有辦法讓輔助線程崩潰應用程序並顯示完整的堆棧?這對調試目的非常有用。

感謝

回答

1

原來我沒有看到崩潰的原因是我曾嘗試過& catch語句......必須小心他們。

0

你應該把一個try ... catch圍繞第二線程的代碼,只是傾倒在捕獲完整的異常描述。

雖然不熟悉iPhone的內部,但請記住主線程只是一個運行各種方法的循環。對於系統在主循環中執行的任何代碼,它很可能會在try ... catch中執行該代碼,以便它可以記錄該問題,並且可能會優雅地退出該應用程序。

+0

我希望後臺線程崩潰也會崩潰所有其他線程,或者至少停止正在運行的應用程序,讓我知道它在XCode,所以我可以調試它。 – Idan 2011-05-19 15:20:10