2010-11-01 57 views
8

我活的应用程序最常见的崩溃之一是在MKMapView崩溃。它在内部方法-[MKMapView mapTileViewDidFinishLoading:]上崩溃。在我的测试中,我无法回溯崩溃,但在iTunes Connect的崩溃报告中非常频繁。今天有什么经验可以帮助你解决这个问题吗?这只是一张非常简单的地图,只显示一个注释。我需要MKMapView崩溃帮助

下面是这个崩溃的完整的堆栈跟踪:

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

可能是值得分享一些... – 2010-11-01 09:05:44

+0

我遇到了同样的问题。发布mapview时会发生这种情况吗?你使用任何覆盖或注释? – matheeeny 2010-11-02 18:30:47

回答

11

我想我可以在我自己的应用程序已经修复了这个问题。看来,this post有正确的解决方案和解释。

在我的应用程序中导致失败的消息是'mapViewDidFinishLoadingMap',它是MKMapViewDelegate的消息。尝试在视图dealloc方法之前将mapView委托设置为'nil'。

+0

谢谢你的回答。你是对的。在发布地图之前,我没有将代表设置为零。我会试试这个,并通知你任何消息。 – AlexVogel 2010-11-03 09:30:07

+0

现在好了在实施解决方案后1个月,没有新的错误报告可以说这是有效的。 – AlexVogel 2010-12-20 15:29:33

+0

谢谢你..你救了我.. :) – EmptyStack 2011-02-19 09:45:06

0

我也不得不在viewDidDisappear中将该委托设置为零来解决该问题。

1

只要做到这一点就能解决问题100%

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

} 
+0

不要忘记打电话给'[超级viewWillDisappear:动画]' – x2on 2014-08-08 09:06:27