【问题标题】:How to use SDWebImage without any cache for one instance如何在没有任何缓存的情况下为一个实例使用 SDWebImage
【发布时间】:2012-02-03 19:48:16
【问题描述】:

每当我在表格视图中显示图像时,我几乎都会使用SDWebImage 图像下载/缓存库。

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

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

如果有缓存版本,它会加载一个缓存版本。

如果我想在一个地方使用 SDWebImage 的简单性(使用占位符/强大的下载代码) - 但没有缓存,该怎么办。

我知道如何在整个 SDWebImage 中禁用缓存,但我不知道您将如何调用 setImageWithUrl: placeholderImage: 以确保 SDWebImage 不使用任何缓存?

我想要这样做的原因是我正在使用它在表格视图中显示网络摄像头(显然,您希望每次都更新它)。

【问题讨论】:

    标签: iphone ios caching tableview sdwebimage


    【解决方案1】:

    我建议从 UIImageView 上的类别移开并创建您自己的 SDWebImageManager 版本。如果您自己使用 SDImageCache 类,您将获得更多控制权。

    来自 SDWebImageManager 本身的示例:

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

    toDisk 可能是我将 BOOL 更改为 NO 的地方,默认管理器使用磁盘缓存。您可能还想经常清除内存以支持您的流媒体图像:

    [[SDImageCache sharedImageCache] clearMemory];
    

    SDWebImageManager 代码很容易理解,我想您不需要重新发明大部分代码,只需几个重要部分即可满足您的需求。

    【讨论】:

      【解决方案2】:

      给你。确保您获得最新版本的 SDWebImage:

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

      来自 SDWebImageManager.h:

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

      【讨论】:

        【解决方案3】:
        1. 斯威夫特 4.2
        2. Xcode:10.0
        3. SDWebImage:~>4.0

        SDImageCache.shared().config.shouldCacheImagesInMemory = false

        【讨论】:

        • 有什么方法可以通过downloadImage的特定调用来完成此操作?
        【解决方案4】:

        您只需使用来自SDImageCache 的shouldCacheImagesInMemory 属性并将其设置为NO。 此功能在 3.7.4+ 中可用。

        【讨论】:

          【解决方案5】:

          您可以使用 SDWebImageDownloader。它不缓存数据。

          【讨论】:

            猜你喜欢
            • 2018-12-17
            • 1970-01-01
            • 2011-08-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-08
            • 2019-12-16
            • 2013-04-02
            相关资源
            最近更新 更多