当从远程服务器找不到图像时,我正在加载默认图像:
detailImageView.image = [UIImage imageNamed:@"noimageavailable.jpg"];
第二种选择:
detailImageView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"noimageavailable" ofType:@"jpg"]];
我注意到,在加载另一个可从服务器获得的图像后noimageavailable.jpg
,它仍然出现在新图像的后面,这意味着noimageavailable.jpg
以某种方式缓存。imageNamed:
我使用这两个选项和imageWithContentsOfFile
API得到了相同的结果。
这是我完成的代码:
if (detailImageURL.length == 0) {
detailImageView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"noimageavailable" ofType:@"jpg"]];
//Once displayed, it's cached for all lifecycle
}else{
dispatch_async(DownloadQueue, ^{
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:detailImageURL]];
dispatch_async(dispatch_get_main_queue(), ^{
detailImageView.image = nil;
UIImage *image = [UIImage imageWithData:imageData];
detailImageView.image = image;
});
});
}
有什么办法可以清除缓存?