1

私のアプリは、ユーザーのアクションに応じて、一連のアップロードを実行する必要があります。彼はアップロードの長いリストを連続してプログラムできるので、ネットワークの混雑を避けるために、一度に1つのNSURLConnectionのみを実行することをお勧めします。NSOperationQueueを使用してアップロードジョブを追加しています。私が使用するキュー内:

[NSURLConnection sendAsynchronousRequest:uploadRequest
                                   queue:tempQueue
                       completionHandler:/* completion code */];

私の問題は、すべてが機能していても、ブロックを使用しているため、非同期接続の関数がすぐに返されるため、NSOperationQueueはNSURLConnectionの終了を待たずに、次のアップロードに直接続行することです。

たとえば、NSMutableArrayを実装して、現在および保留中のアップロードのリストを追跡し、それに応じてディスパッチできることはわかっていますが、このループに、すでに開いているNSURLConnectionがある場合に待機するように指示する簡単な方法があるかどうかを知りたいです。進捗。

4

2 に答える 2

1

同期接続を使用してみませんか?

[myQueue addOperationWithBlock:^{
    NSData *data = [NSURLConnection sendSynchronousRequest:…
        returningResponse:… error:…];
    // …
}];

次に、同時操作の最大数を1に設定すると、アップロードは1つずつ実行されます。

于 2012-11-07T08:31:02.343 に答える
0

さて、あなたはあなたの操作キューmaxConcurrentOperationCountを1に設定することができます[queue setMaxConcurrentOperationCount:1]のようにこれがうまくいくことを願っています

于 2012-11-07T08:26:44.517 に答える