2011-11-16 4 views
9

Aquí está mi código:UIAlertView se muestra a partir de hilos de fondo y con ningún delegado crea EXC_BAD_ACCESS

#ifdef DEBUG 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"ERROR" message:@"JSON Parsing Error" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
#endif 

Este código se ejecuta en un subproceso en segundo plano (responsable de análisis sintáctico), y el error sólo ocurre cada vez que otro. ¿Alguna idea sobre cuál es el problema aquí?

Respuesta

17

No te metas con la interfaz de usuario del hilo de fondo. Crear un método y llamar a ese método en el hilo principal:

[someObject performSelectorOnMainThread:@selector(showDebug:) 
          withObject:@"JSON Parsing Error" 
          waitUntilDone:YES]; 
+0

respuesta perfecta, ya que tenía problema en IOS 6.0 que fue resuelto –

2

No debe ejecutar código de interfaz de usuario en el hilo separado.

Si la aplicación tiene una interfaz gráfica de usuario, se recomienda que recibe eventos relacionados con el usuario e iniciar actualizaciones de la interfaz de hilo principal de la aplicación. Este enfoque ayuda a evitar los problemas de sincronización asociados con el manejo de eventos del usuario y el contenido de la ventana de dibujo . Algunos frameworks, como Cocoa, generalmente requieren este comportamiento, pero incluso para aquellos que no lo hacen, mantener este comportamiento en el hilo principal tiene la ventaja de simplificar la lógica para administrar su interfaz de usuario.

Threads and Your User Interface

Cuestiones relacionadas