关于objective c:Blocks:在完成处理程序中释放对象?

Blocks: Release object in completion handler?

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

1
2
3
4
5
6
7
8
9
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    Foo *foo = [[Foo alloc] init];

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

    // Location B
}

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


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