2010-11-01 5 views
8

Einer der häufigsten Abstürze meiner Live-App ist ein Absturz bei MKMapView. Es stürzt bei der internen Methode -[MKMapView mapTileViewDidFinishLoading:] ab. Während meines Tests konnte ich den Absturz nicht nachvollziehen, kommt aber sehr häufig in den Absturzberichten von iTunes Connect vor. Gibt es irgendwelche Erfahrungen mit diesem Absturz? Es ist nur eine sehr einfache Karte, die genau eine Anmerkung zeigt.Ich brauche Hilfe mit einem MKMapView Absturz

Dies ist die komplette stacktrace dieser Absturz:

Exception Type: EXC_BAD_ACCESS (SIGBUS) 
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000009 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib     0x339737d8 objc_msgSend + 16 
1 MapKit       0x345709ec -[MKMapView mapTileViewDidFinishLoading:] 
2 CoreFoundation     0x344492e4 -[NSObject(NSObject) performSelector:withObject:] 
3 Foundation      0x3326981e __NSThreadPerformPerform 
4 CoreFoundation     0x34460f1e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 
5 CoreFoundation     0x34432ba0 __CFRunLoopDoSources0 
6 CoreFoundation     0x34432444 __CFRunLoopRun 
7 CoreFoundation     0x34432270 CFRunLoopRunSpecific 
8 CoreFoundation     0x34432178 CFRunLoopRunInMode 
9 GraphicsServices    0x3026b5ec GSEventRunModal 
10 GraphicsServices    0x3026b698 GSEventRun 
11 UIKit       0x31ad011c -[UIApplication _run] 
12 UIKit       0x31ace128 UIApplicationMain 
13 MYApp       0x00002e08 main + 36 
14 MYApp       0x00002dd8 start + 32 
+0

wert einige teilen Könnte lösen ... –

+0

ich das gleiche Problem auftritt. Ist das passiert, wenn Sie die Kartenansicht freigeben? Verwenden Sie Überlagerungen oder Anmerkungen? – matheeeny

Antwort

11

Ich denke, dass ich dieses Problem behoben haben kann meine eigene Anwendung in. Es scheint, dass this post die richtige Lösung und Erklärung hat.

Die Nachricht, die den Fehler in meiner Anwendung verursachte, war 'mapViewDidFinishLoadingMap', die eine Nachricht von MKMapViewDelegate ist. Versuchen Sie, den mapView-Delegaten zuvor in Ihrer Dealloc-Methode auf 'nil' zu setzen.

+0

Vielen Dank für Ihre Antwort. Du hast recht. Ich habe den Delegaten nicht auf Null gesetzt, bevor ich die Karte freigegeben habe. Ich werde das versuchen und Sie über Neuigkeiten informieren. – AlexVogel

+0

OK jetzt 1 Monat nach dem Implementieren der Lösungen und keine neuen Fehlerberichte kann man sagen, das funktioniert. – AlexVogel

+0

Danke Mann .. Du hast mich gerettet .. :) – EmptyStack

0

Ich musste auch den Delegaten auf Null in ViewDidDisappear setzen, um das Problem zu beheben.

1

Genau dies tun wird, das Problem zu 100%

-(void) viewWillDisappear:(BOOL)animated 
{ 
    self.mapView.delegate = nil; 
    mapView=Nil; 
    NSLog(@"viewWillDisappear"); 

} 
+0

Vergiss nicht '' super viewWillDisappear: animated] 'zu nennen – x2on