我正在尝试在顶级 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)。有没有办法使这项工作?