6

我现在有一个应用程序,可以在地图上显示各种图钉。我尝试设置mapView.showsUserLocation = YES;显示用户的当前位置,但是这使我的应用程序(“程序收到的信号:SIGABRT”)崩溃,并显示以下错误消息:

Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: *** -[MKUserLocation counter]: unrecognized selector sent to instance 0x10ad60
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[MKUserLocation counter]: unrecognized selector sent to instance 0x10ad60'
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: Stack: (...)

这有点令人困惑,因为我没有使用 MKUserLocation,或者这就是问题所在?

该应用程序确实将 CoreLocation 用于其他不相关的目的,但是当尚未使用 CoreLocation 时,该应用程序会以相同的方式响应。

如果有人可以提供帮助,那就太棒了!

谢谢 - 詹姆斯

4

2 回答 2

24

请务必在此方法中包含以下内容:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    if ([annotation class] == MKUserLocation.class) {
        return nil;
    }
    ...
}

我希望你现在已经解决了这个问题;)

于 2009-12-10T11:08:52.540 回答
1

感谢 Berend 回答问题和 james.ingham 提出问题!几个月来我一直在寻找解决这个问题的方法,这个线程为我解决了这个问题!

检查 MKUserLocation 引脚类型将是最合乎逻辑的事情。但是谁还记得在实现 viewForAnnotation 方法时这样做。即使您不打算在应用程序中使用 MKuserlocation,始终进行此检查以避免将来遇到问题也是安全的做法。

于 2010-02-22T12:29:44.287 回答