0

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

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

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

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

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

4

2 回答 2

0
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");
                   }];
于 2014-02-28T06:15:05.077 回答
0

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

[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"];
});

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

于 2013-04-24T15:12:56.407 回答