我想在頂級iPhone異常處理程序中顯示UIAlertView。該處理函數如下:在iPhone頂級異常處理程序中顯示警報
void applicationExceptionHandler(NSException *ex) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:[ex reason]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
我見過類似的代碼在其他地方(例如,NSSetUncaughtExceptionHandler not catch all errors on iPhone)。
如果我在調試器中單步執行,我可以看到異常處理程序被調用,並且我可以看到當前屏幕變暗,就好像它要在它前面顯示警報,但沒有任何內容出現。在調試器之外,應用程序會立即退出並返回到系統主屏幕。
如果我在applicationDidFinishLaunching中捕獲錯誤並在返回之前顯示警報,它確實有效。我認爲alert視圖永遠不會有機會在異常處理程序中顯示,因爲應用程序正在終止(相反,如果我只是從applicationDidFinishLaunching中解脫出來,就不會坐在這裏)。有沒有辦法做到這一點?
「[[NSRunLoop currentRunLoop]運行]」 的伎倆。謝謝! – 2009-12-08 04:49:04
謝謝,我已經根據您的回答向此主題發佈了另一個解決方案。 – 2010-09-04 11:22:00
你真的需要向用戶顯示錯誤信息嗎?如果你能夠默默地處理這個例外情況,也許最好,也不用擔心解決這個問題。 – 2011-03-01 22:03:05