我正在使用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中显示这个图像时,有明显的延迟。
如何正确使用缓存?谢谢!
答案 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");
}];