我试图清除缓存位,应用程序的大小不会变得明显变小。
对于缓存图片,我的应用大小约为30MB加45MB。
这就是我尝试清除缓存的方式:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[AFImageDownloader defaultURLCache] removeAllCachedResponses];
AFAutoPurgingImageCache *imageCache = [AFImageDownloader defaultInstance].imageCache;
[imageCache removeAllImages];
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];
}];
答案 0 :(得分:2)
见下文:
AFAutoPurgingImageCache *imageCache = [AFImageDownloader defaultInstance].imageCache;
imageCache
存储在内存中,无法执行[imageCache removeAllImages];
[[AFImageDownloader defaultURLCache] removeAllCachedResponses];
。这是Apple提供的唯一API来清除URLCache
。fsCachedData
时,您发现removeAllCachedResponses
未被删除。这是因为苹果有自己的机制来清除磁盘数据。也许它会在我搜索时每7天清除一次磁盘数据,但我无法确定。fsCachedData
很有意思。 Should I clear the fsCachedData folder myself? 答案 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];