MKMapViewDelegate方法的内存泄漏问题

时间:2011-07-27 00:57:10

标签: iphone objective-c memory-management

我的代码是:

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,我就无法释放它,因为方法调用终止了。我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:2)

使用autorelease是一种解决此类问题的方法〜虽然,请注意放置对象的自动释放池以确保适当的生命周期。 =)

非常有价值的文档链接,适用于任何想出这些内容的人: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html