2012-09-26 16 views
6

Estamos desarrollando una aplicación para iPad comenzando desde la vista de mapa con anotaciones.IOS 6 MKMapView se bloquea en [EAGLContext setCurrentContext]

Al usar el guión gráfico cuando cambiamos a otra vista que tiene una solución de gráficos basada en OpenGL (shinobi). Al regresar a la vista con el mapa no tiene problema hasta que toque el mapa para moverlo. Cuando intentamos mover el mapa, se bloquea con la excepción exc_bad_access en [EAGLContext setCurrentContext]

¿Alguna idea?

Aquí es la parte del registro de bloqueo:

OS Version:  iOS 6.0 (10A403) 
Report Version: 104 

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000c 
Crashed Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 OpenGLES      0x39974b12 +[EAGLContext setCurrentContext:] + 74 
1 VectorKit      0x32c64f0c -[VGLGPU setPaused:] + 120 
2 VectorKit      0x32c54db8 -[VKMainLoop updateLinkState] + 492 
3 VectorKit      0x32c54950 -[VKScreenCanvas _updateDisplayStatus:] + 104 
4 VectorKit      0x32ccea9a -[VKScreenCanvas setGesturing:] + 254 
5 MapKit       0x34defc3c -[MKMapView _willStartUserInteraction] + 48 
6 MapKit       0x34de891a -[MKMapGestureController beginGesturing] + 50 
7 MapKit       0x34de8c6c -[MKMapGestureController handlePan:] + 252 
8 UIKit       0x379ead2c _UIGestureRecognizerSendActions + 124 
9 UIKit       0x379b23d8 -[UIGestureRecognizer _updateGestureWithEvent:] + 388 
10 UIKit       0x37b9f474 ... 
+0

También estoy enfrentando la misma situación. alguien ayude por favor –

Respuesta

7

Trabajo para Shinobi y hemos estado investigando esto - es en parte debido al código de mapa de Apple mantener el asimiento de nuestro GL-Contexto. Como solución temporal, puede crear una subclase de un ShinobiChart y salida nula el contexto GL en el método dealloc de la tabla, así:

- (void) dealloc { 
    [super dealloc]; 

    [EAGLContext setCurrentContext:nil]; // must be after dealloc 
} 

o si está utilizando ARC, (ya que el envío dealloc no es permitido):

#import <ShinobiCharts/SChartCanvas.h> 

@interface ShinobiChartGl : ShinobiChart 
@end 

@implementation ShinobiChartGl 

- (void) dealloc 
{ 
    [self.canvas.glView removeFromSuperview]; 

    self.canvas.glView = nil; // force glView dealloc 

    [EAGLContext setCurrentContext:nil]; 
} 

@end 

espero que esto ayude, pero no directamente en contacto con nosotros - vamos a tener una solución completa en nuestra próxima versión.

+2

Tengo exactamente el mismo problema, pero la solución anterior no lo está resolviendo :( – theLastNightTrain

+0

La actualización a 2.1.1 tampoco lo ha solucionado – theLastNightTrain

+0

Hola, póngase en contacto con nosotros a través de nuestro sitio web (shinobicontrols.com) si todavía tienes dificultades –

0

para aquellos que no funcionaba incluso trató [EAGLContext setCurrentContext:nil]; en dealloc, prueba este

dispatch_async(dispatch_get_main_queue(), ^{ 
     [EAGLContext setCurrentContext:nil]; 
    }); 

EAGLContext debe fijarse en el hilo principal.

Cuestiones relacionadas