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

时间:2012-06-23 00:31:27

标签: iphone ios xcode mkoverlay

在向地图视图添加叠加层时,我收到以下警告:

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 个答案:

答案 0 :(得分:4)

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

所以将for循环更改为:

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

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