2012-04-19 48 views
0

我正在使用CLGeocoder,并将块用作完成处理程序。我不确定我创建的CLGeocoder实例的保留/释放周期。Objective-C:将块用作完成处理程序

这里的基本代码:

CLGeocoder* geocoder = [[CLGeocoder alloc] init]; 
[geocoder reverseGeocodeLocation:newLocation completionHandler: 
    ^(NSArray* placemarks, NSError* error) 
    { 
     // process the placemarks... 
     [geocoder autorelease]; 
    } 
]; 

是自动释放的地理编码器作为块的最后一行的推荐方式来处理呢?任何建议表示赞赏!

回答

1

您可以释放它(不需要自动释放)当您不确定何时需要释放对象(例如在方法结束时返回对象或方便的方法)时,自动释放是用于

在这种情况下,您确定您已完成使用该对象,以便它可以被释放。当然,autorelease也可以工作,但在内存中的时间会更长。