我的代码是:
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,就不能释放它,因为方法调用终止了。我该如何解决这个问题呢?谢谢!
发布于 2011-07-27 10:27:23
使用autorelease是解决此类问题的一种方法,不过,请注意您的对象将被放入哪个自动释放池中,以确保适当的寿命。=)
对于任何想弄明白这件事的人来说,都有非常有价值的文档链接:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html
https://stackoverflow.com/questions/6838343
复制相似问题