35

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

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

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

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

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

4

5 に答える 5

113
SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];

これらのコード行も忘れずに入れてくださいdidReceiveMemoryWarning

于 2013-04-29T11:23:32.917 に答える
9

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

于 2012-12-14T15:31:12.083 に答える
1

次のコードのみが機能しました:Swift 5.0、Xcode 11、iOS 13、SDWebImage pod 5.0

 SDWebImageManager.shared.imageCache.clear(with: .all) {
        print("deleted all")
 }

次のようなオプションを選択する場所SDImageCacheType.disk, SDImageCacheType.memory, SDImageCacheType.disk

また、特定の画像をキャッシュから削除する場合は、次を使用します。

SDWebImageManager.shared.imageCache.removeImage(forKey: "url of image", cacheType: .all)
于 2020-06-10T10:54:36.123 に答える
-2

SDImageCacheメソッドを除いて、画像のURLを確認することを強くお勧めします。私の状況では、imageCacheのすべての方法を試しましたが、メモリの問題はまだ続いていました。クラッシュは、ハードウェアが処理できなかったため、主にiPhone4sで発生しました。

主な問題はURLアンパサンドエンコーディングでした!

たとえば、次のURLを確認してください。最初のURLは「&amp」を使用しており、2番目のURLは使用していません。アンパサンドが原因で、JSONライブラリが幅を読み取ることができず、幅の値が本来よりもはるかに高くなります。それが私が記憶の問題を抱えていた理由です。

1)/select.php?imageid=101961221 "&amp" ; width = 100 "&amp" ; isWatermarked = true

2)/select.phpimageid=101961221&width=100&isWatermarked=true

また、最新バージョンのSDWebImageライブラリにはUIImageView+WebCache.hクラスが含まれており、キャッシュの問題を非常にうまく処理します。

于 2015-05-12T10:22:59.283 に答える
-2

アイコンはサーバー側で変更できますが、

そのため、毎回更新をキャッシュしてロードする必要があります。

最新のSDWebImageフレームワーク(5.12.x)を使用している場合

あなたはそれをこのように呼ぶことができます、

[imgView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"xxx" options:SDWebImageRefreshCached];

220112で編集します。

于 2021-10-20T08:21:15.443 に答える