2009-03-03 7 views
5

Deseo escribir un código para manejar excepciones cuando falla la conexión HTTP. Utilizo los siguientes códigos:¿Cómo aparece una alerta cuando la conexión HTTP falla en el iPhone?

-(void) connection:(NSURLConnection *)connection 
    didFailWithError: (NSError *)error { 
    UIAlertView *errorAlert = [[UIAlertView alloc] 
        initWithTitle: [error localizedDescription] 
        message: [error localizedFailureReason] 
        delegate:nil 
        cancelButtonTitle:@"OK" 
        otherButtonTitles:nil]; 
    [errorAlert show]; 
    [errorAlert release]; 
    [activityIndicator stopAnimating]; 
    NSLog (@"Connection Failed with Error"); 
} 

Pero el programa simplemente se bloquea cuando falla la conexión. ¿Cómo dejar que la alerta aparezca sin que el programa se cuelgue?

+0

¿Esto se ejecuta en el hilo principal o en un hilo de fondo? La manipulación de objetos UI * en subprocesos de fondo tiende a no funcionar. Más allá de eso, ¿en qué línea ocurre el choque? Utilice el depurador o mueva la línea NSLog para averiguarlo. –

Respuesta

3

Nada está obviamente mal con su código, deberá proporcionar más información.

Asegúrate de tener un breakpoint on objc_exception_throw y luego ejecuta el programa debajo del depurador. Luego puede determinar en qué línea se lanza la excepción.

Una conjetura salvaje, pero quizás [error localizedDescription] o [error localizedFailureReason] está regresando nil.

+0

El método 'didFailWithError' ni siquiera se llamó cuando uso una URL incorrecta. ¿Alguna idea de por qué sucede esto? –

+0

Tal vez no está fallando? Si recibe una respuesta del servidor, creo * que cuenta como éxito, incluso si es una respuesta 404 No encontrada. – benzado

+0

¿No fallar con la URL incorrecta? Entonces, ¿cómo agregar una advertencia para la URL incorrecta? Me refiero a qué método debo usar? –

Cuestiones relacionadas