2

当我写这个方法时:

-(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 *

请问有什么解决办法

4

1 回答 1

2

如果你确定你会使用 dequeue 获得正确类型的注释,那么你可以像这样简单地转换类型:

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

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

于 2013-11-13T06:47:22.970 回答