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
それともリクエストとアクティビティインジケーターの同期を維持するためのより良い方法はありますか?
ありがとう!