0

一度に複数のリクエストを発行しているアプリで ASIHTTP リクエストを使用しています。データの取得に失敗した場合は、保留中のすべてのリクエストをキャンセルしたいと考えています。テーブルビュースクロールでテーブルビューからリクエストを送信しているため、操作キューを使用していません。正常に完了したリクエストに影響を与えずに残りの保留中のリクエストをキャンセルする方法は? NSOperationQueue または ASIHTTPOperationQueue を使用していない場合でも。

4

1 に答える 1

1

非同期のキャンセルについて話していると思いますASIHTTPRequestか?

非同期リクエスト、つまり[request startAsynchronous]callで開始されたリクエストをキャンセルします[request cancel]

ところで、リクエストをキャンセルするASIHTTPRequestと、それはエラーとして扱われ、デリゲートの失敗メソッドが呼び出されます。この動作が望ましくない場合は、キャンセルを呼び出す前にデリゲートを nil に設定するか、clearDelegatesAndCancel代わりにメソッドを使用してください。そのようです -

// Cancels an asynchronous request
[request cancel]

// Cancels an asynchronous request, clearing all delegates and blocks first
[request clearDelegatesAndCancel];

ただし、複数のリクエストについて話しているので、キューを使用することをお勧めします。リクエストのキャンセルは、 を使用してワンショットで行うことができます[queue cancelAllOperations];

于 2013-07-12T07:31:46.643 に答える