0

ネットワーク呼び出しを実行する必要があります。私は NSURLConnection を使用していますが、それをブロックを使用する新しいクラスにカプセル化しました。

    [MAURLConnection asyncConnectionWithURLString:str 
                                  completionBlock:^(NSData *data, NSURLResponse *response) {
                                      //completed, do something with data returned

                                  } 
                                       errorBlock:^(NSError *error) {
                                           //error
                                       }];
}

しかし、今はこれらのいくつかを一度に呼び出す必要がありますが、それらがいつ終了するかを知る必要があります。これを行う最善の方法は何ですか?進行状況は必ずしも必要ではありません。すべてが終了したときだけです。

4

2 に答える 2

0

Almoのコメントの別のバリエーションは、それらをキューのような構造にプッシュすることであり、完了すると、キューの長さはゼロになります。キューが空であるかどうかを確認するための非ブロッキングチェックを実行するには、実行ループを使用します。

- (void)waitUntilDone {       
    while (![_queue count] > 0) {
        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
    }
}

ニーズに応じて、これを使用してブロックしてコールバックし、スレッドに配置して作業を続行し、コールバックすることができます。

于 2012-07-13T15:34:37.397 に答える
0

私が考えることができる最も簡単な考えはカウンターです。各接続が終了したら、カウンターを増やします。カウンターが自分の番号に達したら、完了です。いくつかの関数を介してカウンターを増やし、カウンター番号がヒットしたときに通知を実行することもできます。これのバリエーションは、完了した接続に関する追加情報を保存できる配列になる場合があります。

于 2012-07-13T15:58:00.317 に答える