【问题标题】:iOS use cached image with SDWebImage properlyiOS 正确使用带有 SDWebImage 的缓存图像
【发布时间】:2014-03-29 06:00:10
【问题描述】:

我正在使用 SDWebImage 来获取图片。

假设我有两个视图控制器 A 和 B。B 是 A 的下一个视图。它们需要显示相同的图像:

[iconIamgeView setImageWithURL:[NSURL URLWithString:@"http://www.example.com/icon.jpg"];

我以为 SDWebImage 会在 A 中的这段代码之后缓存 http://www.example.com/icon.jpg,所以 B 会使用缓存。因此,当我使用此代码在 B 中显示相同的图像时,不应该有可检测的延迟。但是,似乎我错了。当我想在 B 中显示此图像时,存在明显的延迟。

如何正确使用缓存?谢谢!

【问题讨论】:

  • 你添加了#import 吗?并且设置正确?它应该有效
  • 是的,我已经导入了标题。我可以在没有缓存部分的情况下成功使用 SDWebImage。你是什​​么意思“设置正确设置”?谢谢!
  • 我指的是 SDWebImage 的安装步骤
  • 是的,我可以使用它,我想我已经安装成功了。所以,正常情况下,SDWebImage在使用setImageWithURL的时候应该缓存图片吧?
  • 是的,很简单

标签: objective-c ios6 sdwebimage


【解决方案1】:

很抱歉,我在问题中提到的问题不是真正的问题。

[iconIamgeView setImageWithURL:[NSURL URLWithString:@"http://www.example.com/icon.jpg"];

这段代码可以很好地缓存。

真正的问题是我设置图像的代码不在主线程上,所以我无法立即显示图像。我用dispatch_async解决了这个问题:

dispatch_async(dispatch_get_main_queue(), ^{
    [iconIamgeView setImageWithURL:[NSURLURLWithString:@"http://www.example.com/icon.jpg"];
});

希望这个答案可以帮助面临同样问题的人。

【讨论】:

    【解决方案2】:
    NSURL *imageURL = [NSURL URLWithString:[linkImageArray objectAtIndex:index]];
    UIImage *placeholderImage = [UIImage imageNamed : [linkImageArray objectAtIndex: index]];
    
    [imageView setImageWithURL:imageURL
              placeholderImage:placeholderImage
                       options:SDWebImageRefreshCached
                     completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)
                       {
                           NSLog(@"image loaded");
                       }];
    

    【讨论】:

    • 请修正帖子。目前,它是一团糟。
    猜你喜欢
    • 2012-10-13
    • 2013-08-28
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2016-08-01
    • 2014-04-15
    • 1970-01-01
    相关资源
    最近更新 更多