iOS 6 上的 MapKit 崩溃
Posted
技术标签:
【中文标题】iOS 6 上的 MapKit 崩溃【英文标题】:Crash with MapKit on iOS 6 【发布时间】:2012-10-31 20:36:19 【问题描述】:我自己无法重现此特定崩溃,但已通过我们的崩溃报告工具进行了报告,并且数百名用户正在体验它。发现很难调试或重现。
它发生在所有硬件平台上,但仅在 ios 6 上。任何帮助或见解都将受到高度赞赏。
异常类型:SIGSEGVCode:SEGV_ACCERR
Fatal Exception
Thread 0 Crashed
0 MapKit _remove(objc_object*, MKQuadTrieNode*) + 13
1 MapKit -[MKQuadTrie remove:] + 54
2 MapKit -[MKAnnotationContainerView observeValueForKeyPath:ofObject:change:context:] + 252
3 Foundation NSKeyValueNotifyObserver + 272
4 Foundation NSKeyValueWillChange + 572
5 Foundation -[NSObject(NSKeyValueObserverNotification) willChangeValueForKey:] + 180
6 Foundation NSKVOForwardInvocation + 130
7 CoreFoundation ___forwarding___ + 626
8 CoreFoundation _CF_forwarding_prep_0 + 24
9 MapKit -[MKUserLocation _updateCoordinate] + 106
10 MapKit -[MKUserLocation setLocation:] + 106
11 MapKit -[MKMapView(UserPositioningInternal) locationManagerUpdatedLocation:] + 994
12 CoreFoundation -[NSArray makeObjectsPerformSelector:withObject:] + 206
13 MapKit -[MKLocationManager _reportLocationStatus:] + 66
14 MapKit -[MKLocationManager locationProvider:didUpdateLocation:] + 1540
15 MapKit -[MKCoreLocationProvider locationManager:didUpdateLocations:] + 864
16 CoreLocation -[CLLocationManager onClientEventLocation:] + 1614
17 CoreLocation __CLClientInvokeCallback_block_invoke_0 + 64
18 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
19 CoreFoundation __CFRunLoopDoBlocks + 160
20 CoreFoundation __CFRunLoopRun + 1450
21 CoreFoundation CFRunLoopRunSpecific + 356
22 CoreFoundation CFRunLoopRunInMode + 104
23 GraphicsServices GSEventRunModal + 74
24 UIKit UIApplicationMain + 1120
25 App Name main.m line 14 main + 14
【问题讨论】:
我也有同样的问题。您可以通过将应用程序发送到后台,将其放置一段时间,然后将其带到前台来重现崩溃。我认为问题与后台的内存警告和视图有关。 【参考方案1】:尝试在你使用它的类的dealloc方法中将locationManager的委托方法设置为nil
类似这样的:
-(void) dealloc
self.locationManager.delegate = nil;
可能发生的情况是对象正在被释放(可能是由于内存不足)并且位置管理器正在尝试向不存在的委托发送消息。
【讨论】:
以上是关于iOS 6 上的 MapKit 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 3GS 上的 iOS 6.0 上的 UICollectionView 崩溃
IOS 6 上的应用程序崩溃 - UIViewControllerHierarchyInconsistency
为啥我的弹出框在 iPhone 6 Plus 上的 iOS 8.1 中崩溃? iOS 8 工作(实际上是 Xcode 6.0 到 6.1 的错误)