Отправка 'MKOverlayView параметру несовместимого типа' id<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 ответ

Решение

overlays свойство возвращает массив объектов модели наложения (объектов, которые соответствуют MKOverlay протокол), а не наложения представлений.

Так что измените цикл for на:

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

Обратите внимание, что в id<MKOverlay> overlay часть.

Другие вопросы по тегам