次のコードを使用して、SDWebImage を使用してリモート サーバーから UICollectionView に画像をロードしています。
[myCell.imageView setImageWithURL:imgURL placeholderImage:nil options:SDWebImageRetryFailed success:^(UIImage *image)
{
[_imageCache storeImage:image forKey:[imgURL absoluteString] toDisk:YES];
} failure:^(NSError *error){
NSLog(@"ERROR: %@", error);
}];
ほとんどのセルでは、このコードは正常に機能します。画像が読み込まれ、ローカル ディスクに保存されます。ただし、いくつかの(ランダムに見える?)画像の後、読み込みが停止します。次に、次のエラーが表示されます。
ERROR: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x1d33fdc0 {NSErrorFailingURLStringKey=http://path/to/image.jpg, NSErrorFailingURLKey=http://path/to/image.jpg, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x1d34c0f0 "The request timed out."}
これが発生すると、私のアプリは NSURLRequests の送信を完全に停止するようです。おそらく約 20 ~ 30 秒後、テーブルを更新できます。失敗した画像が正しく読み込まれ、アプリはすべての NSURLRequests への応答を再開します。
コレクションビューをすばやく下にスクロールすると、これがより頻繁に発生する傾向があることがわかりました. 一度にダウンロードしようとしているものが多すぎる可能性がありますか? 同時ダウンロード数を制限する方法はありますか? このメソッドは、最新の SDWebImage コードでは非推奨になっているようです。