当我写这个方法:

-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    MKPinAnnotationView *view =[self.mapView dequeueReusableAnnotationViewWithIdentifier:@"pin"];

    if (view == nil) {
        view =[[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"pin"];
    }
}

我的*view对象上有警告。.“不兼容的指针类型使用MKPinAnnotationView *类型的表达式初始化MKAnnotationView *

请问对此有什么解决方案

最佳答案

如果确定使用出队队列将获得正确的注释类型,则可以像下面这样简单地转换类型:

MKPinAnnotationView *view = (MKPinAnnotationView *) [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"pin"];

关键是dequeueReusableAnnotationViewWithIdentifier返回的id类型可以是指向任何对象的指针。因此,编译器警告您MKPinAnnotationView *id类型可能不兼容。

关于ios - MapKit Xcode编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19947114/

10-13 04:05