2012-12-13 12 views
34

Ich zeige eine Liste der aus dem Internet heruntergeladenen Symbole mit Text in einer Tabellenansicht an. Die Symbole können auf der Serverseite geändert werden und ich muss sie ersetzen, sobald neue Symbole verfügbar sind. Ich versuche, mit dem folgenden Code:SDWebImage Cache leeren

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

Und [[SDImageCache sharedImageCache] clearMemory]; In meinem Refresh-Rückruf nennen, aber es nicht den Inhalt des Cache löschen. Mehr dazu, selbst wenn ich die Anwendung schließe und sie wieder öffne, ist das Bild immer noch da.

Ich fand nur eine Möglichkeit, den Cache zu löschen, und es ist telefonisch [[SDImageCache sharedImageCache] clearDisk];. Das funktioniert nur, nachdem ich die App geschlossen und wieder geöffnet habe.

Wie kann ich SDWebImage erzwingen, das Disk-Caching nicht zu verwenden?

+0

Für all die Leute, die jedes Mal nur ein paar Bilder neu herunterladen möchten, übergeben Sie 'SDWebImageRefreshCached' in den Optionen – Eugene

Antwort

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

Vergessen Sie nicht, diese Zeilen Code in Ihre didReceiveMemoryWarning auch zu setzen.

+20

Die aktuelle Version von SDWebImage löscht den Speicher-Cache automatisch, wenn Speicherwarnungen auftreten. Keine Notwendigkeit, dies zu tun, und insbesondere keine Notwendigkeit, den Plattencache zu löschen. –

+0

können Sie bitte eine Quelle hinzufügen. Welche Version unterstützt diese Funktionalität genau? –

+5

https://github.com/rs/SDWebImage/blob/master/SDWebImage/SDImageCache.m#L65 –

9

Befindet sich die Quelle, wenn ein Problem. Es scheint, dass ich durch das Singleton-Muster betrogen wurde, das in SDImageCache verwendet wurde. Der Cache für die Erweiterung, der über UIImageView verwendet wird, wird von SDWebImageManager gesteuert, die eine Instanzvariable SDImageCache hat. Wenn Sie den Cache für die Erweiterung löschen möchten, müssen Sie die Methoden imageCache wie clearDisk und clearMemory aufrufen.

+0

nicht in der Lage Clearcache-Methode aufzurufen. [[SDWebImageManager sharedManager] clearCaches]. Ich habe das versucht, aber es stürzt ab. Bitte hilf mir. –

+3

@SurajShinde Es gibt keine solche Methode für 'SDImageCache', natürlich wird es abstürzen. Verwende '[[[[SDWebImageManager sharedManager] imageCache] clearDisk];', '[[[SDWebImageManager sharedManager] imageCache] clearMemory];' – Eugene

+0

Danke, ich habe alten SDwebcache benutzt, es hatte keine imageCache-Instanz. –

-1

Außer SDImageCache Methoden, empfehle ich Ihnen dringend überprüfen Sie Ihre Bild URLs. In meiner Situation habe ich versucht, jede Methode für ImageCache und Speicherproblem wurde weiterhin fortgesetzt. Abstürze wurden hauptsächlich auf dem iPhone 4s verursacht, da die Hardware damit nicht umgehen konnte.

Hauptproblem war url Ampersand Codierung!

In Beispiel, überprüfen Sie diese URLs: erste URL verwendet "& Amp" und zweite ist nicht. Aufgrund des kaufmännischen Und-Zeichens kann meine JSON-Bibliothek nicht lesen, der Wert für Breite und Breite wird viel höher, als es sein sollte. Deshalb hatte ich ein Speicherproblem.

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

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

auch die neuesten Versionen von SDWebImage Bibliothek hat UIImageView+WebCache.h Klasse gehören und es ist wirklich schön Cache Probleme zu behandeln.

Verwandte Themen