최상위 iPhone 예외 처리기에 UIAlertView를 표시하려고합니다. 핸들러의 기능은 다음과 같습니다 : 나는 (예를 들어, NSSetUncaughtExceptionHandler not catch all errors on iPhone) 다른 곳에서 비슷한 코드를 본 적이iPhone 최상위 예외 처리기에 경고를 표시합니다.
void applicationExceptionHandler(NSException *ex) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:[ex reason]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
.
디버거에서 단일 단계로 진행하면 예외 처리기가 호출 된 것을 볼 수 있으며 현재 화면이 어두워 보이는 것을 볼 수 있습니다. 그러나 아무 것도 나타나지 않습니다. 디버거 외부에서는 앱이 즉시 종료되고 시스템 홈 화면으로 돌아갑니다.
나는 applicationDidFinishLaunching에서 오류를 잡아서 거기에 경고를 표시하면 작동합니다. 응용 프로그램이 종료되기 때문에 경고보기는 예외 처리기에서 표시 할 수있는 기회를 얻지 못한다고 가정합니다 (applicationDidFinishLaunching에서 손을 떼면 아무 것도하지 않는 대신). 이 일을 할 수있는 방법이 있습니까?
"[[NSRunLoop currentRunLoop] 실행]"트릭을했다. 감사! –
고마워, 나는 당신의 대답을 기반 으로이 스레드에 다른 해결책을 게시했습니다. –
정말 사용자에게 오류 메시지를 표시해야합니까? 예외를 자동으로 처리 할 수 있다면 어쨌든이 문제를 해결하는 것에 대해 걱정할 필요가없는 것이 가장 좋습니다. –