Objective-C:使用块作为完成处理程序

时间:2012-04-19 21:57:27

标签: objective-c-blocks

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

以下是基本代码:

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

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

1 个答案:

答案 0 :(得分:1)

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

在这种情况下,您确定已完成使用该对象,因此可能会将其释放。当然,自动释放也有效,但在内存中存在的时间更长。