7

私のapplicationDidFinishLaunching:メソッドでは、次のようにオブジェクトを作成し、そのオブジェクトで非同期メソッドを呼び出します。

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

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

    // Location B
}

ARCを使用しない場合、どこに置く必要があり[foo release]ますか?完了ブロック内(ロケーションA)または非同期メソッド呼び出しの直後(ロケーションB)?それともまったく問題ではありませんか?

4

1 に答える 1

6

[foo release]ブロックの代わりに通常のメソッド呼び出しがあった場合に通常行うように、ロケーションBに配置します。ブロックはオブジェクトを保持し、完了後に解放します。

于 2012-11-26T02:27:43.183 に答える