我正在使用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中放一些缓存方法将它们存储在磁盘上还是什么? 我正试图让它发挥作用,但每次都失败。
答案 0 :(得分:1)
好像我发现了这个问题。
我不应该设置缓存([prefetcher setOptions:SDWebImageMemoryCacheOnly];
)的选项,但是我不得不将它保留在低优先级,所以现在一切都运行完美!