清除缓存AFNetworking后,图像不会从磁盘中删除

时间:2016-11-09 18:06:33

标签: ios afnetworking

我试图清除缓存位,应用程序的大小不会变得明显变小。

对于缓存图片,我的应用大小约为30MB加45MB。

这就是我尝试清除缓存的方式:

 [[NSURLCache sharedURLCache] removeAllCachedResponses];
 [[AFImageDownloader defaultURLCache] removeAllCachedResponses];
 AFAutoPurgingImageCache *imageCache = [AFImageDownloader defaultInstance].imageCache;
 [imageCache removeAllImages];            
  • 在我的iPhone 6 iOS10上,应用程序的大小并没有变小。
  • 在应用程序文件com.alamofire.imagedownloader/fsCachedData内的模拟器上,所有文件仍在那里

这是我使用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];
            }];

3 个答案:

答案 0 :(得分:2)

见下文:

  1. AFAutoPurgingImageCache *imageCache = [AFImageDownloader defaultInstance].imageCache; imageCache存储在内存中,无法执行[imageCache removeAllImages];
  2. 您只需要[[AFImageDownloader defaultURLCache] removeAllCachedResponses];。这是Apple提供的唯一API来清除URLCache
  3. 当您致电fsCachedData时,您发现removeAllCachedResponses未被删除。这是因为苹果有自己的机制来清除磁盘数据。也许它会在我搜索时每7天清除一次磁盘数据,但我无法确定。
  4. 我认为看到其他人如何使用fsCachedData很有意思。 Should I clear the fsCachedData folder myself?
  5. 我希望它能帮到你。

答案 1 :(得分:1)

我们也在其中一个应用中看到了这一点。根据这个http://blog.airsource.co.uk/2014/10/11/nsurlcache-ios8-broken/,这是一个iOS 8的错误,苹果将在今天的iOS 8.1更新中纠正这个错误。

所以回答你的问题:不,你不应该自己删除缓存,并且运气好Apple的修复确实会清理旧数据。如果由于某种原因没有,你应该能够自己删除它。

我已经确认iOS 8.1确实可以解决问题。用户必须在更新后启动应用程序一次,以便清除缓存。

答案 2 :(得分:0)

此代码适用于AFNetworking 3.1:

        [[NSURLCache sharedURLCache] removeAllCachedResponses];

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

        [imageDownloader.imageCache removeAllImages];