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 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

VectorKit MapKit 堆栈溢出崩溃

iPhone 3GS 上的 iOS 6.0 上的 UICollectionView 崩溃

IOS 6 上的应用程序崩溃 - UIViewControllerHierarchyInconsistency

为啥我的弹出框在 iPhone 6 Plus 上的 iOS 8.1 中崩溃? iOS 8 工作(实际上是 Xcode 6.0 到 6.1 的错误)

Mapkit实施问题

XCode 6项目在ios 7.1上segue后崩溃