SDWebImage缓存仅适用于Simulator

时间:2012-10-03 10:47:33

标签: objective-c sdwebimage

我正在使用SDWebImagePrefetcher从我的plist(约100,最大尺寸600kb)预取图像列表,以便保存它们(在磁盘上可能)以供以后使用。

关键是在模拟器上这是正常工作,而在设备上,它只加载和缓存其中的一些,老实说,我不明白为什么。

我知道这是因为在预取它们之后,我关闭WiFi连接并查看图像是否已在imageView(在detailView上)中正确加载,并且令人惊讶的是,只有1 \ 5的图像被预取,即使是consoloe说它预取了所有这些。

我试图在方法startPrefetchingAtIndex:中输入SDWebImagePrefetcher.m这行代码

- (void)startPrefetchingAtIndex:(NSUInteger)index withManager:(SDWebImageManager *)imageManager
{
    if (index >= [self.prefetchURLs count]) return;
    _requestedCount++;

    [imageManager downloadWithURL:[self.prefetchURLs objectAtIndex:index] delegate:self options:self.options];
    [cache storeImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[self.prefetchURLs objectAtIndex:index]]]] forKey:[self.prefetchURLs objectAtIndex:index] toDisk:YES];

}

然后在我的imageView类中:

SDImageCache* cache = [SDImageCache sharedImageCache];
    UIImage* cachedImage = [cache imageFromKey:aString fromDisk:YES];

    if (cachedImage) {
        [imageView setImage:cachedImage];
    }
    else{
    [imageView setImageWithURL:[NSURL URLWithString:anUrl]
              placeholderImage:nil options:SDWebImageProgressiveDownload
                       success:^(UIImage *image) { [activityIndicator stopAnimating];[activityIndicator removeFromSuperview]; }
                       failure:^(NSError *error) {  [activityIndicator stopAnimating];[activityIndicator removeFromSuperview]; }];

    [imageView addSubview:activityIndicator];
    }

没有具体结果。始终在模拟器上工作,而不是在设备上。我在这里错过了什么吗? 我应该在SDWebImagePrefetcher中放一些缓存方法将它们存储在磁盘上还是什么? 我正试图让它发挥作用,但每次都失败。

1 个答案:

答案 0 :(得分:1)

好像我发现了这个问题。

我不应该设置缓存([prefetcher setOptions:SDWebImageMemoryCacheOnly];)的选项,但是我不得不将它保留在低优先级,所以现在一切都运行完美!