gpt4 book ai didi

ios - SDWebImage UITableView 单元格图像不持久化

转载 作者:可可西里 更新时间:2023-11-01 04:44:18 26 4
gpt4 key购买 nike

我正在使用 SDWebImage 库来异步下载和缓存图像以及来自 Web 服务的图像。以下是我用来下载图片的方法:

- (void) downloadThumbnails:(NSURL *)finalUrl
{
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:finalUrl
options:0
progress:nil
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
{
if (image)
{
[self setThumbnail:image];
}
}];

}

它正在成功地从网络服务下载图像并将它们显示在表格 View 中。但是,它不会在应用程序运行之间保留图像。为了缓存图像,我还需要做些什么吗??

更新:请勿建议使用以下内容:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

因为,我的程序结构不同。其次,如果您阅读 SDWebImage 库的描述 HERE ,你会知道它可以像我使用 SDWebImageManager 一样使用它。

最佳答案

我怀疑 SDWebImage 中的缓存机制在这种特定情况下无法正常工作的原因是因为它基于图像 URL。

因此,如果您只是下载 image 并将其分配给对象的某些属性(就像您正在将其分配给 thumbnail),如果您稍后访问它属性 if 将简单地绕过缓存机制。

为了保持程序的结构,您可以做的是:

  1. thumbnailURL 存储在您的 self 对象中;

  2. 第一次下载图片时,调用SDWebImageManagerdownloadWithURL:方法;这也会将图像存储在缓存中; (你已经按照上面的代码做了)

  3. thumbnail 设为只读属性,访问缓存以检索与 thumbnailURL 关联的图像。

这是您应该做的最少更改。

这可能是第 3 点中描述的只读属性的实现:

- (UIImage*)thumbnail {

return [[SDImageCache sharedCache] imageFromDiskCacheForKey:self.thumbnailURL];
}

其中 self.thumbnailURL 是您保存图像 URL 的对象中的另一个属性。

希望这对您有所帮助。

关于ios - SDWebImage UITableView 单元格图像不持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com