如何清除IOS应用程序库caching(下载的图像)

我正在下载asynchronous图像。 我从我的networking服务器获得了很多图像,但都是临时的,我不会caching它们中的任何一个。 但该应用程序显然将下载图像保存在/ Library / Caches中。 我该如何解决?

有什么办法来防止caching下载的图像? 或从caching中删除它们?

我尝试了这两种不同的方法:

#pragma mark - Method 1 - (void)method1{ NSURL *imageURL = [NSURL URLWithString:self.photoLink]; [self setImage:[UIImage imageNamed:@"nut"] forState:UIControlStateNormal]; dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); dispatch_async(queue, ^{ NSData *data = [NSData dataWithContentsOfURL:imageURL options:NSDataReadingUncached error:NULL]; dispatch_async(dispatch_get_main_queue(), ^{ [self setImage:[UIImage imageWithData:data] forState:UIControlStateNormal]; }); }); //} } #pragma mark - Method 2 - (void)method2{ NSOperationQueue *queue = [[NSOperationQueue alloc]init]; // The Placeholder [self setImage:[UIImage imageNamed:@"nut"] forState:UIControlStateNormal]; NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(loadDataAsyc) object:nil]; [queue addOperation:operation]; [operation release]; } -(void)loadDataAsyc{ // create a local autorelease pool since this code runs not on main thread NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:self.photoLink] options:NSDataReadingUncached error:NULL]; UIImage *image = [UIImage imageWithData:data]; [self performSelectorOnMainThread:@selector(showImage:) withObject:image waitUntilDone:NO]; [pool release]; } -(void)showImage:(UIImage *)image{ [self setImage:image forState:UIControlStateNormal]; } 

caching将在需要时清空,即应用程序收到低内存警告时。 你没有理由自己做这个,也没有可用的公共API。


注意
当os为你pipe理一些东西时,你不需要担心。


但是如果你真的想清除你的caching然后按照这个

 NSFileManager *filemgr; filemgr = [NSFileManager defaultManager]; if ([filemgr removeItemAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] error: NULL] == YES) NSLog (@"Remove successful"); else NSLog (@"Remove failed"); [filemgr createDirectoryAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] withIntermediateDirectories:NO attributes:nil error:nil];