Pregunta

En mi aplicación, cuando se pulsa un botón determinado, llamo a un método (postButtonClicked:) que analiza un servicio web en un hilo separado. entonces puedo mostrar al usuario una UIAlertView para informarles si la llamada se ha realizado correctamente o no.

Este es el código que utilizo:

- (void)postButtonClicked:(id)sender {
    [NSThread detachNewThreadSelector:@selector(postViaWebservices) toTarget:self withObject:nil];
}

- (void)postViaWebservices {

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    WebServiceManager *wsm = [[WebServiceManager alloc] init];

    BOOL success = [wsm callPost];

    if (success) {
        [self performSelectorOnMainThread:@selector(postSuccess) withObject:nil waitUntilDone:NO];
    } else {
        [self performSelectorOnMainThread:@selector(postFailure) withObject:nil waitUntilDone:NO];
    }   

    [wsm release];

    [pool release];

}

- (void)postSuccess {

    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:nil
                          message:@"Success message"
                          delegate:self
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];

    [alert show];
    [alert release];

}

- (void)postFailure {

    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:nil
                          message:@"Failure message"
                          delegate:self
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];

    [alert show];
    [alert release];

}

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

    ...

}

Esta todo funcionaba bien hasta que he añadido el alertView:clickedButtonAtIndex: al controlador de vista (requerido para otro UIAlertView I pantalla). Ahora, cada vez que llamo postButtonClicked:, la aplicación se cierra. Sin embargo, si quito alertView:clickedButtonAtIndex:, a continuación, llamar postButtonClicked:, la aplicación funciona bien.

No estoy seguro de lo que tengo que hacer para solucionar este problema.

¿Fue útil?

Solución

Independientemente de si o no el contenido del método vista delegado de alerta es relevante para el éxito / fracaso mensajes, todavía podría ser un problema, por lo que nos muestra el contenido de ese método puede ser la única manera de conseguir que una respuesta . De cualquier manera, el método vista delegado de alerta se llama cuando se pulse en Aceptar en el éxito / falla mensajes, porque se está configurando como el delegado alertas self. Si no desea que el método para invocar al despedir el éxito / fracaso alertas, no establezca el delegado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top