Я пытаюсь отобразить UIAlertView в обработчике исключений для верхнего уровня iPhone. Функция обработчика выглядит следующим образом:Показывать оповещение в обработчике исключения верхнего уровня для 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 и покажу предупреждение перед возвратом. Я предполагаю, что представление предупреждения никогда не получает возможность отображать в обработчике исключений, потому что приложение заканчивается (в отличие от того, чтобы сидеть там ничего не делать, если я просто выручаюсь из applicationDidFinishLaunching). Есть ли способ сделать эту работу?
"[[NSRunLoop currentRunLoop] Run]" сделал трюк. Благодаря! –
Спасибо, я опубликовал другое решение этой темы на основе вашего ответа. –
Вам действительно нужно показать сообщение об ошибке пользователю? Возможно, было бы лучше, если бы вы могли спокойно разобраться с этим исключением, и не нужно беспокоиться об этом. –