2012-09-26 11 views
6

Stiamo sviluppando un'applicazione per iPad a partire dalla vista mappa con annotazioni.IOS 6 MKMapView si arresta in modo anomalo su [EAGLContext setCurrentContext]

Utilizzando storyboard quando Passiamo a un'altra vista che ha una soluzione di creazione di grafici basata su opengl (shinobi). Al ritorno alla vista con la mappa non ha alcun problema fino a quando un tocco sulla mappa lo muove. Mentre proviamo a spostare la mappa si blocca con l'eccezione exc_bad_access a [EAGLContext setCurrentContext]

Qualche idea?

Qui è la parte del registro blocchi:

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

Anche io sto affrontando la stessa situazione. qualcuno mi aiuti per favore –

risposta

7

io lavoro per Shinobi e abbiamo indagato questo - è in parte dovuto al codice di carta di Apple mantenere il possesso del nostro GL-Context. Come soluzione temporanea, è possibile creare una sottoclasse di uno ShinobiChart e nil-out contesto GL nel metodo dealloc del grafico, in questo modo:

- (void) dealloc { 
    [super dealloc]; 

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

o se si sta utilizzando ARC, (dal momento che l'invio di dealloc non è consentito):

#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 

Spero che questo aiuti, ma li mette in contatto direttamente - avremo una correzione completa nella nostra prossima release.

+2

Ho esattamente lo stesso problema ma la soluzione sopra non la risolve :( – theLastNightTrain

+0

L'aggiornamento alla 2.1.1 non lo ha risolto – theLastNightTrain

+0

Ciao - mettiti in contatto con noi tramite il nostro sito web (shinobicontrols.com) se hai ancora difficoltà –

0

per coloro che non ha funzionato anche cercato [EAGLContext setCurrentContext:nil]; su dealloc, provate questo

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

EAGLContext dovrebbe essere impostato sul thread principale.

Problemi correlati