-1

我有一个应用程序恰好调用addAnnotation了 3 次(在使用 验证坐标是否良好后CLLocationCoordinate2DIsValid,传递一个响应idtitle latitudelongitudecoordinate模型。在模型中,我通过NSLog在我的coordinate方法中执行一个来观察回调。

请注意,coordinateandname被实现为方法,尽管这应该没有区别,对吧?

我的期望:

MapKit 将访问坐标方法 3 次

我得到什么:

MapKit 每个坐标访问坐标 3 次,然后尝试第 4 次,即使没有第 4 个坐标并且应用程序因内存异常而崩溃,结果是nil.

我对 MapKit 很幼稚,但是我必须对此进行一些解释。

任何帮助表示赞赏!

4

1 回答 1

1

如果用户位置显示在您的地图上(蓝点),您将有四个注释,因为蓝点也是一个注释。

您的应用程序可能会崩溃,因为用于显示用户位置的注释没有调用任何方法coordinate

为了防止您的代码调用该方法coordinate,您可以检查检索到的注释是否是您的自定义注释类的实例:

if ([annotion isKindOfClass:[YourCustomeAnnotation class]])
    // it's one of your annotations
else
    // it's the current location annotation 

或检查当前注解是否为当前位置注解

if ([annotion isKindOfClass:[MKUserLocation class]])
    // it's the current location annotation 
else
    // it's one of your annotations
于 2013-06-04T19:42:28.173 回答