web-dev-qa-db-ja.com

SDWebImageのクリアキャッシュ

Webからダウンロードしたアイコンのリストを、テキストとともに表形式で表示しています。サーバー側でアイコンを変更できます。新しいアイコンが利用可能になり次第、アイコンを交換する必要があります。次のコードを使用してみます。

[imgView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"table_avatar_icon"] options:SDWebImageCacheMemoryOnly];

そして、リフレッシュコールバックで[[SDImageCache sharedImageCache] clearMemory];を呼び出しますが、キャッシュの内容は削除されません。さらに、アプリケーションを閉じて再度開いても、イメージはまだそこにあります。

キャッシュをクリアする方法は1つしか見つかりませんでした。[[SDImageCache sharedImageCache] clearDisk];を呼び出してください。これは、アプリを閉じて再度開いた後にのみ機能します。

SDWebImageでディスクキャッシュを使用しないようにするにはどうすればよいですか?

34
Eugene
SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];

これらのコード行もdidReceiveMemoryWarningに入れることを忘れないでください。

113
carmen_munich

問題がある場合はソースを見つけました。 SDImageCacheで使用されているシングルトンパターンにだまされたようです。 UIImageViewで使用される拡張機能のキャッシュは、SDWebImageManagerのインスタンス変数を持つSDImageCacheによって制御されています。拡張機能のキャッシュをクリアする場合は、clearDiskやclearMemoryなどのimageCacheのメソッドを呼び出す必要があります。

9
Eugene