トップレベルの iPhone 例外ハンドラーに UIAlertView を表示しようとしています。ハンドラー関数は次のようになります。
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 でエラーをトラップし、戻る前にアラートを表示すると機能します。アプリが終了しているため、アラートビューが例外ハンドラーに表示される機会は決してないと思います(applicationDidFinishLaunchingから抜け出すだけで何もせずに座っているのとは対照的です)。これを機能させる方法はありますか?