2

iOs アプリに AFNetworking を使用しています。他の多くのアプリや Web サイトの検索バーと同様に、検索候補を実装する必要があります。したがって、基本的には GET リクエストを開始しますが、ユーザーが新しい文字をタップすると古いリクエストはキャンセルされます。どうやってやるの?AFHTTPClient サブクラスがあり、getPath を使用しています。最善の方法は、このリクエストをキャンセル可能にして、シングルトン AFHTTPClient サブクラスの他の HTTP リクエストに「優先順位を付ける」ことです。前もって感謝します。

4

2 に答える 2

1

AFHTTPClientでこのメソッドを使用するだけです

- (void)cancelHTTPOperationsWithMethod:(NSString *)method andURL:(NSURL *)url

AFHTTPClient サブクラスにシングルトンがある場合のサンプル:

[[MHHTTPClient sharedHTTPClient] cancelHTTPOperationsWithMethod:@"GET" andURL:[NSURL URLWithString:@"http://www.mysite.com/autocomplete.json?search=tes"]];
于 2011-12-21T13:49:47.123 に答える
0

特定のサービスに基づいてアプリケーションを作成しようとする場合は、AFNetworkingで最高のHTTPClientが使用され、同じホスト上の異なるパスにリクエストを送信すると思います。

そのようなものについては、キャンセル可能なプレーンなAFHTTPRequestOperationを使用します。AFHTTPRequestOperationを内部に持つラッパークラスを作成します。次に、ユーザーが押すたびに、httpリクエスト(およびラッパー)で「cancel」を呼び出し、同じ場所に新しいリクエストを作成して、新しいリクエストを作成します。これは、私がすでにアプリに実装している方法であり、正常に機能します。

ただし、注意してください。AFNetworkingはNSOperationブロックベースであり、cancelを呼び出すときは、NSOperationの完了ブロックが呼び出されないようにする必要があります(または、少なくとも、呼び出された直後に戻ります)。操作をキャンセルしても、完了ブロックが呼び出される可能性があるため、メモリリークが発生し、バグの追跡が困難になります。最善の策は、完了ブロックを作成し、続行する前に操作がキャンセルされているかどうかを確認することです。

于 2011-12-21T13:24:04.853 に答える