Sto tentando di visualizzare un UIAlertView in un gestore di eccezioni di iPhone di livello superiore. La funzione di gestione è simile al seguente:Visualizzazione di un avviso in un gestore di eccezioni di livello superiore di iPhone
void applicationExceptionHandler(NSException *ex) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:[ex reason]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
ho visto un codice simile altrove (per esempio, NSSetUncaughtExceptionHandler not catch all errors on iPhone).
Se eseguo il single-step nel debugger, posso vedere che il gestore di eccezioni è chiamato, e posso vedere lo schermo corrente debole come se stesse per visualizzare l'avviso di fronte ad esso, ma non appare nulla. Al di fuori del debugger, l'app si chiude immediatamente e torna alla schermata principale del sistema.
funziona se io trappola un errore nel applicationDidFinishLaunching e visualizzare un avviso prima di tornare lì. Presumo che la vista di avviso non abbia mai la possibilità di essere visualizzata nel gestore delle eccezioni perché l'app sta terminando (al contrario di stare lì senza fare nulla se non faccio altro che scaricare applicationDidFinishLaunching). C'è un modo per farlo funzionare?
"[run [NSRunLoop currentRunLoop]]" ha fatto il trucco. Grazie! –
Grazie, ho pubblicato un'altra soluzione a questo thread in base alla risposta. –
Hai davvero bisogno di mostrare il messaggio di errore all'utente? Forse sarebbe meglio se tu potessi gestire silenziosamente l'eccezione e non dovresti preoccuparti di risolvere comunque questo problema. –