2012-06-23 6 views
4

내지도보기로 오버레이를 추가 할 때 다음과 같은 경고를 받고 있어요 :<MKOverlay> '

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

코드는 잘 작동하고 오버레이가 예상대로 그려 ,하지만 나는 경고를 없애고 싶다. 를 일으키는 코드 :

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

가 (물론, 루프 안쪽 라인이 오류가 제기 무슨이다)이 Google은 오류에 대한 하나의 결과가 없습니다. 예를 들어 MKAnnotationView와 비슷합니다. (예를 들어)이 용액 :

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

오류를 일으킨다.

아이디어가 있으십니까? 감사합니다.

답변

4

overlays 속성 오버레이 모델 개체합니다 (MKOverlay 프로토콜에 따르는 객체) 아니라 오버레이 보기의 배열을 반환한다. id<MKOverlay> overlay 부분에 별표가없는

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

참고 :

그래서에 대한 루프를 변경합니다.

+0

나는 별표 부분을 놓쳤다. 나는 내가 Mac으로 돌아 왔을 때 내일 그것을 점검 할 것이다. 답변 해주셔서 감사합니다! –

+0

예. 'id' (프로토콜 한정자 유무와 관계없이) 유형은 암시 적으로 포인터이기 때문에 별표가 없습니다. – rickster

+0

감사합니다. 그것은 효과가 있었다. –