2016-11-09 4 views
3

Ich habe versucht, Cache-Bit zu löschen, die Größe der App wird nicht wesentlich kleiner.Bilder werden nicht von der Festplatte nach dem Löschen von Cache gelöscht AFNetworking

Meine App-Größe beträgt etwa 30 MB plus 45 MB für zwischengespeicherte Bilder.

Dies ist, wie ich Cache zu löschen versucht:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[[AFImageDownloader defaultURLCache] removeAllCachedResponses]; 
AFAutoPurgingImageCache *imageCache = [AFImageDownloader defaultInstance].imageCache; 
[imageCache removeAllImages];    
  • Auf meinem iPhone 6 iOS10 die Größe der App nicht kleiner habe.
  • Auf Simulator innerhalb app Dateien com.alamofire.imagedownloader/fsCachedData alle Dateien sind immer noch da

Dies ist, wie ich Bilder herunterladen mit AFNetworking (3.1.0):

#import "AFImageDownloader.h" 

[photoImageView setImageWithURLRequest:[NSURLRequest requestWithURL:thumb] placeholderImage:myCachedImage success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
       [self setPhotoImage:image]; 
      } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
       [self setupPlaceholder]; 
      }]; 
+0

ich das Caching im Simulator nicht immer funktioniert gefunden, versuchen reales Gerät. –

Antwort

1

See folgt:

  1. AFAutoPurgingImageCache *imageCache = [AFImageDownloader defaultInstance].imageCache; Die imageCache ist im Speicher gespeichert, es ist sinnlos zu tun [imageCache removeAllImages];
  2. Sie müssen nur [[AFImageDownloader defaultURLCache] removeAllCachedResponses]; tun. Es ist die einzige API, die Apple bietet, um die URLCache zu löschen.
  3. Sie finden die fsCachedData wird nicht entfernt, wenn Sie removeAllCachedResponses anrufen. Dies liegt daran, dass Apple einen eigenen Mechanismus zum Löschen der Daten auf der Festplatte hat. Vielleicht löscht es die Diskdaten alle 7 Tage, als ich suchte, aber ich kann nicht sicherstellen. Ich denke, es ist interessant zu sehen, wie die anderen fsCachedData verwenden. Should I clear the fsCachedData folder myself?
  4. Ich hoffe, es wird dir helfen.
1

Das sehen wir auch in einer unserer Apps. Laut diesem http://blog.airsource.co.uk/2014/10/11/nsurlcache-ios8-broken/ ist es ein iOS 8 Bug, den Apple heute im iOS 8.1 Update korrigiert hat.

So, um Ihre Frage zu beantworten: Nein, Sie sollten nicht den Cache selbst löschen müssen und mit etwas Glück wird Apples Korrektur wirklich die alten Daten bereinigen. Wenn aus irgendeinem Grund nicht, sollten Sie in der Lage sein, es selbst ohne Probleme zu löschen.

Ich habe überprüft, dass iOS 8.1 tatsächlich das Problem korrigiert. Der Benutzer muss die App nach dem Update einmal starten, damit der Cache gelöscht wird.

+0

Wieso redest du über iOS 8 und verlinke zu einem Blogpost von 2014? Wir sind jetzt 2016 und die meisten Leute benutzen iOS 10. Ich habe das gleiche Problem wie das Original-Poster, aber ich bezweifle, dass das etwas mit einem Fehler in iOS 8 zu tun hat (der in iOS8.1 behoben wurde). – knutigro

0

Dieser Code funktioniert für AFNetworking 3.1:

 [[NSURLCache sharedURLCache] removeAllCachedResponses]; 

     AFImageDownloader *imageDownloader = [AFImageDownloader defaultInstance]; 
     NSURLCache *urlCache = imageDownloader.sessionManager.session.configuration.URLCache; 
     [urlCache removeAllCachedResponses]; 

     [imageDownloader.imageCache removeAllImages]; 
Verwandte Themen