我继承了一个引发此警告的项目

Incompatible pointer types assigning to 'MKPinAnnotationView *' from 'MKAnnotationView *'


在这条线

pinView=[[[MKAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID]autorelease];
    }


我想在没有警告的情况下退回项目,所以我希望这里的某人能尽快得到答复

完整代码:

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation: (id  <MKAnnotation>)annotation {
    MKPinAnnotationView *pinView = nil;

    NSUserDefaults *prefs=[NSUserDefaults standardUserDefaults];

    if(annotation != mapView.userLocation)

    {

        static NSString *defaultPinID = @"com.invasivecode.pin";

        pinView = (MKPinAnnotationView *)[mapView  dequeueReusableAnnotationViewWithIdentifier:defaultPinID];


        if (!pinView) {
            pinView=[[[MKAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID]autorelease];
        }

    }
    pinView.animatesDrop=YES;
    [mapView.userLocation setTitle:@"I am here"];
    [mapView.userLocation setSubtitle:[prefs objectForKey:@"CurrentLocationName"]];
    return pinView;
}


谢谢!

最佳答案

pinView变量声明为MKPinAnnotationView,但该行创建一个MKAnnotationView

更改此行:

pinView=[[[MKAnnotationView alloc]initWithAnnotation...


至:

pinView=[[[MKPinAnnotationView alloc]initWithAnnotation...



您还应该在该elseif部分中处理注释视图的重用:

else
    pinView.annotation = annotation;

07-26 03:57