我使用iOS SDK 8并且在某些位置显示注释时遇到问题,但它在某些地方工作正常。
对于那些失败的位置,它会一直循环if (pinView == nil)
并且应用程序会意外退出,是否有根本想法?
- (void)populateAllLocation {
self.locations = [selectedCountry_.locations allObjects];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"latitude != nil && longitude != nil"];
self.locations = [[selectedCountry_.locations filteredSetUsingPredicate:predicate] allObjects];
[mapView_ addAnnotations:locations_];
[self centralizeMap];
}
-(MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id<MKAnnotation>)annotation {
if ([annotation isKindOfClass:MKUserLocation.class]) {
static NSString *PinIdentifier = @"UserLocationPin";
MKAnnotationView *pinView =
[mapView_ dequeueReusableAnnotationViewWithIdentifier:PinIdentifier];
if (pinView == nil) {
pinView =
[[[MKAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:PinIdentifier] autorelease];
pinView.canShowCallout = YES;
pinView.image = [UIImage imageNamed:@"mylocation_pin"];
}
[self populateAllLocation];
return pinView;
}
答案 0 :(得分:1)
您的populateAllLocation
正在触发注释视图的显示,但委托方法本身会调用populateAllLocation
,因此您有一个循环。您应该只在委托中返回注释视图,而不是更改地图。