43 votos

EXC_BAD_ACCESS código 2 en UIAlertView en iOS6

Estoy tratando de averiguar por qué im consiguiendo este accidente en mi aplicación.

Funciona perfectamente bien en Xcode 4.4 corriendo en el simulador con ios5.1, pero cuando cambié en xcode 4.5 y me estoy poniendo un código EXC_BAD_ACCESS 2 ios6. Este es mi código:

- (void) myMethod
{
    UIAlertView *alertview = [[[UIAlertView alloc]initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] autorelease];
    alertview.tag = 1
    [alertview show];
}

Esto me está dando un código EXC_BAD_ACCESS 2 en la [UIAlertView show] línea

¿alguna idea?

¡ Gracias!

126voto

Eva Madrazo Puntos 3220

Ya lo tengo. Tengo el mismo problema, en mi caso parece que el método es lanzado desde el fondo ahora (ahora en ios7, en ios6 que uialertview automáticamente se puso en el hilo principal como @nodepond dice - gracias!-).

tratar de asegurar que se muestra el método del hilo principal:

[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];

¡Buena suerte!

0voto

orafaelreis Puntos 835

Sucedió conmigo, ni siquiera en el 2014. El problema se desea utilizar un objeto ya liberado.

Lo que hice mal:

//class B with UIAletViewDelegate

-(void) showAlert{
 UIAlertView * alert = [[UIAlertView alloc] initWithTitle bla bla...];
 [alert show];
}


//class A
viewDidLoad{
 MyClassB *B = [[B alloc] init];
 [B showAlert];
}

¿Cuál es la forma correcta:

//Class A
@implementation A{
    ClassB *B;
}

 viewDidLoad{
     B = [[B alloc] init];
     [B showAlert];
 }

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X