如何清除AFNetworking中的图像caching或任何caching?

大家好可以任何人帮助我如何清除AFNetworking中的caching。

我曾经有AFNetworking旧版本,我看到它已被更新,任何机构可以帮助我如何清理AFnetworkingcaching。

以前是这样的

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

如果您正在使用AFNetworking,我最近实施了一个小的解决方法,从caching中删除图像。

查看文件“UIImageView + AFNetworking.h”

@interface UIImageView (AFNetworking) ,添加以下内容:

- (void)clearImageCacheForURL:(NSURL *)url;

@protocol AFImageCache ,添加:

- (void)clearCachedRequest:(NSURLRequest *)request;

接下来,打开“UIImageView + AFNetworking.m”

@implementation UIImageView (AFNetworking) ,添加以下内容:

 - (void)clearImageCacheForURL:(NSURL *)url { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:request]; if (cachedImage) { [[[self class] sharedImageCache] clearCachedRequest:request]; } } 

几乎完成! 现在只需添加下面的@implementation AFImageCache

 - (void)clearCachedRequest:(NSURLRequest *)request { if (request) { [self removeObjectForKey:AFImageCacheKeyFromURLRequest(request)]; } } 

你很好走! 现在,当你需要从caching中清除特定的图像url,只需调用[imageView clearImageCacheForURL:imgURL];

https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ

AFNetworking是否有内置的caching机制?

AFNetworking利用了NSURLCache及其任何子类已经提供的cachingfunction。

我们build议您尝试一下Pete Steinberger的SDURLCache分支,它提供了磁盘caching,而不是由iOS上的NSURLCache实现。 对于SDURLCache实例,您可能会发现将ignoreMemoryOnlyStoragePolicy设置为YES很有用,这将确保将图像更加一致地caching到磁盘以供离线使用(这在SDURLCache README中报告,iOS 5支持,但仅限于http,所以如果你想支持iOS 4或https,它仍然是一个不错的select)

我也会看到这个问题: 如何禁用AFNetworkingcaching

此外: AFNetworking和caching

当你激活NSURLCache的时候,你可以指定它的最大尺寸。 您也可以通过调用removeAllCachedResponses或removeCachedResponsesForRequest方法来清除caching。

希望能帮助到你。

如果您使用的是使用cocoaPods的AFNetworking,那么您可以通过将UIImageView(clearCache)

  - (void)clearImageCacheForURL:(NSURL *)url { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:request]; if (cachedImage) { [self clearCached:[[self class] sharedImageCache] Request:request]; } } - (void)clearCached:(NSCache *)imageCache Request:(NSURLRequest *)request { if (request) { [imageCache removeObjectForKey:[[request URL] absoluteString]]; } } 

如果您通过cocoapods使用AFNetworking3.0,则通过为UIImageView创build类别来使用以下代码。

 #import <AFNetworking/UIImageView+AFNetworking.h> #import <AFNetworking/AFImageDownloader.h> #import <AFNetworking/AFAutoPurgingImageCache.h> + (void)clearImageCacheForURL:(NSURL *)url { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; id <AFImageRequestCache> imageCache = [[self class] sharedImageDownloader].imageCache; UIImage *cachedImage = [imageCache imageforRequest:request withAdditionalIdentifier:nil]; if (cachedImage) { [self clearCached:imageCache Request:request]; } } + (void)clearCached:(AFAutoPurgingImageCache *)imageCache Request:(NSURLRequest *)request { if (request) { [imageCache removeImageforRequest:request withAdditionalIdentifier:nil]; } } 
 AFImageDownloader *imageDownloader = [AFImageDownloader defaultInstance]; NSURLCache *urlCache = imageDownloader.sessionManager.session.configuration.URLCache; [urlCache removeAllCachedResponses]; [imageDownloader.imageCache removeImageWithIdentifier:url]; 

这将有助于删除现金形象。 url是需要删除的图片url