iOS正确使用带有SDWebImage的缓存图像

时间:2013-04-24 08:21:52

标签: objective-c ios6 sdwebimage

我正在使用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中显示这个图像时,有明显的延迟。

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

2 个答案:

答案 0 :(得分: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"];
});

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

答案 1 :(得分: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");
                   }];