我继承了一个引发此警告的项目
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...
您还应该有一个 else
部分到 if
来处理注释 View 的重用:
else
pinView.annotation = annotation;
关于iphone - MKPinAnnotationView 与 MKAnnotationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10499226/