1

UIImageView+AFNetworking:setImageWithURLRequestテーブルビューのセルに画像を読み込むために使用しています。これはうまく機能しAFNetworkActivityIndicatorManagerており、以下の例のように、画像の読み込み中にアクティビティインジケーターを表示してみました。

[[AFNetworkActivityIndicatorManager sharedManager] incrementActivityCount]; 
[imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:placeholder]
  success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
    [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
  } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
    [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
  }
];

私が遭遇した問題は、テーブルビューをすばやくスクロールすると、AFNetworkingが特定の要求をキャンセルし、AFNetworkActivityIndicatorManager決してデクリメントされないことです。リクエストをキャンセルすると、処理が高速になり、仕様によるもののように見えます。

「たとえば、テーブルビューのセルはリサイクルされるため、新しい画像のURLを設定すると、前のリクエストが自動的にキャンセルされます。」https://github.com/AFNetworking/AFNetworking/wiki/Introduction-to-AFNetworking

キャンセルを検出してデクリメントできるようにする方法はありますか、AFNetworkActivityIndicatorManagerそれともリクエストとアクティビティインジケーターの同期を維持するためのより良い方法はありますか?

ありがとう!

4

1 に答える 1

12

これを行う必要はありません。必要なのは次の電話だけです。

AFNetworkActivityIndicatorManager.sharedManager.enabled = YES;

AppDelegate application:didFinishLaunchingWithOptions:を使用すると、AFNetworkingは、ネットワーク接続が開始および停止したときにインジケーターを非表示および表示した後の処理を行います。

于 2012-10-23T22:48:29.663 に答える