SDWebImagePrefetcher を使用して、plist から画像のリスト (約 100、最大サイズ 600kb) をプリフェッチし、後で使用できるように (ディスク上に) 保存します。
ポイントは、シミュレーターではこれが正常に機能しているのに対し、デバイスではそれらの一部のみをロードしてキャッシュしているということです。正直なところ、その理由はわかりません。
それらをプリフェッチした後、WiFi接続をオフにして、画像が(detailViewの)imageViewに正しくロードされているかどうかを確認し、驚くべきことに、コンソールがプリフェッチしたと言ったとしても、プリフェッチされた画像は1 \ 5しかないため、これを知っていますモール。
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にキャッシュメソッドを配置する必要がありますか? 私はそれを機能させようとしていますが、毎回失敗しています。