将'MKOverlayView'发送到不兼容类型的参数'id<MKOverlay>'

4

当我给地图视图添加叠加层时,出现以下警告:

Sending 'MKOverlayView *const __strong' to parameter of incompatible type 'id<MKOverlay>'

代码很好用,覆盖层绘制正常,但我希望消除警告。引起警告的代码如下:

for(MKOverlayView *overlay in [mapView overlays]) {
    [mapView removeOverlay:overlay];
}

(显然,for循环内的代码是导致此错误的原因)Google没有任何关于该错误的结果,只有与MKAnnotationView类似的相关结果。那里的解决方案(例如):

for(id<MKOverlay> *overlay in [mapView overlays]) {
    [mapView removeOverlay:overlay];
}

引发错误。

有什么想法吗? 谢谢!

1个回答

4

overlays属性返回一个覆盖层模型对象数组(符合MKOverlay协议的对象),而不是覆盖层视图

因此,请将for循环更改为:

for(id<MKOverlay> overlay in [mapView overlays]) {

请注意,在 id<MKOverlay> overlay 部分中没有星号。

我错过了星号部分.. 我明天回到 Mac 时会检查它。谢谢你的答案! - La bla bla
是的。没有星号,因为类型“id”(带或不带协议限定符)隐式地是一个指针。 - rickster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接