我的代码是:
MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"Pin"];
if(pinView == nil)
{
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"];
pinView.annotation = annotation;
pinView.animatesDrop = YES;
[pinView setCanShowCallout:YES];
if([[(MapPin *)annotation title] isEqualToString:@"Starting Location"])
{
pinView.pinColor = MKPinAnnotationColorGreen;
pinView.rightCalloutAccessoryView = nil;
}
else
{
pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinView.pinColor = MKPinAnnotationColorRed;
}
}
return pinView;
问题当然是我必须返回pinView,我分配并需要在某些时候发布。但是,一旦我返回pinView,我就无法释放它,因为方法调用终止了。我该如何解决这个问题?谢谢!
答案 0 :(得分:2)
使用autorelease
是一种解决此类问题的方法〜虽然,请注意放置对象的自动释放池以确保适当的生命周期。 =)
非常有价值的文档链接,适用于任何想出这些内容的人: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html