Posted at

SDWebImageでキャッシュしているつもりが、キャッシュ出来ていなかったので正しい使い方をメモしておく

More than 3 years have passed since last update.

今回の記事では、SDWebImage 3.7.1 を想定しています。

ライブラリ SDWebImage

ドキュメント SDWebImage 3.7.1

キャッシュされていなかった原因ですが、単純に使うクラスを間違えていました。


  • SDWebImageDownloader

  • SDWebImageManager

SDWebImageDownloaderクラスを使用して実装していたのですが、

そもそもこのクラスはダウンロードだけを担当していて、キャッシュ等の処理は行いません。

[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:@"URL文字列"]

options:0
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
}
completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
}];

キャッシュを行いたい場合は、SDWebImageManagerクラスを使用して実装します。

[[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:@"URL文字列"]

options:0
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
}
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
}];

SDWebImageManagerクラスの中で、SDWebImageDownloader クラスのインスタンスを持っているので、

ダウンロード処理自体はSDWebImageDownloaderで行っているようです。