2012-06-23 1 views
4

Je reçois l'avertissement suivant lors de l'ajout des superpositions à mon point de vue sur la carte:Envoi « MKOverlayView au paramètre de type incompatible « id <MKOverlay> »

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

Le code fonctionne très bien, et les superpositions sont dessinées comme ils le devraient , mais j'aimerais me débarrasser de l'avertissement. Le code qui en est la cause:

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

(De toute évidence, la ligne à l'intérieur de la boucle est ce qui collecte cette erreur) Google n'a pas un seul résultat pour cette erreur. seulement similaire avec MKAnnotationView par exemple. Les solutions là-bas (par exemple):

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

déclenche une erreur.

Des idées? Merci!

Répondre

4

La propriété overlays retourne un tableau de la superposition modèle objets (les objets qui sont conformes au protocole MKOverlay) et non la superposition vues.

changer Ainsi, la boucle for à:

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

Notez qu'il n'y a pas astérisque dans la partie id<MKOverlay> overlay.

+0

J'ai manqué la partie astérisque .. Je vais la vérifier demain quand je suis revenu à un Mac. Merci d'avoir répondu! –

+0

Yup. Il n'y a pas d'étoile car le type 'id' (avec ou sans qualificatif de protocole) est implicitement un pointeur. – rickster

+0

Merci! ça a marché. –

Questions connexes