块:在完成处理程序中释放对象?

时间:2012-11-26 00:54:57

标签: objective-c macos block

在我的applicationDidFinishLaunching:方法中,我创建了一个对象并在其上调用异步方法,如下所示:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    Foo *foo = [[Foo alloc] init];

    [foo asynchronousMethodWithCompletion:^{
        // Location A
    }];

    // Location B
}

如果我不使用ARC,我必须在哪里放[foo release]?在完成块(位置A)内或异步方法调用之后(位置B)?或者根本不重要?

1 个答案:

答案 0 :(得分:6)

您将[foo release]放在位置B,就像通常的方法调用而不是块一样。该块将保留该对象并在完成后释放它。