MKMapView显示了UserLocation Crash

时间:2014-02-10 09:12:35

标签: ios objective-c mkmapview

我通过app delegate的applicationDidEnterBackground方法在MKMapView对象上设置showsUserLocation = NO。这是为了阻止它在后台更新用户的位置以节省电池电量。但是,我似乎收到了这样的少量崩溃日志:

0   MapKit                              0x3174c5f6 <redacted> + 9
1   MapKit                              0x3174c5e9 -[MKQuadTrie contains:] + 24
2   MapKit                              0x3176eaa7 -[MKAnnotationManager _removeAnnotation:updateVisible:removeFromContainer:] + 50
3   MapKit                              0x3176ea6d -[MKAnnotationManager removeAnnotation:] + 28
4   MapKit                              0x31782283 -[MKMapView stopUpdatingUserLocation] + 118

在没有崩溃的情况下,在进入后台之前立即停止用户位置更新的最佳方法是什么?我搜索了这个问题的解决方案,却找不到一个。

2 个答案:

答案 0 :(得分:0)

可能的解决方案是执行以下操作:

if ([annotation isKindOfClass:[MKUserLocation class]]) {
    ((MKUserLocation *)annotation).title = @"My Current Location";
    return nil; //return nil to use default blue dot view
}

答案 1 :(得分:0)

您可以尝试的方法是使用以下方式打包电话:

if (myMapView.userLocationVisible) {
    myMapView.showsUserLocation = NO;
}

由于地图似乎认为注释已被删除。但是,在这种情况下,您仍然无法禁用跟踪。另一个选择是不要为iOS 7做这个,因为我认为他已经在8.x解决了。至少在前者中,即使在大多数情况下为您剔除注释,您也可以禁用跟踪。

目前正好穿过墙上的东西。