2012-10-03 2 views
2

SDWebImagePrefetcher를 사용하여 나중에 사용할 수 있도록 디스크에 저장하기 위해 내 plist (약 100, 최대 크기 600kb)에서 이미지 목록을 프리 페치합니다.SDWebImage 캐싱은 시뮬레이터에서만 작동합니다.

포인트 이것은 시뮬레이터에서 잘 작동하는 반면, 디바이스에서는로드 중 일부만 캐싱하고 솔직히 이유를 알지 못합니다.

프리 패치를 한 후 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]; 

} 

다음의 라인을 넣어 시도 : 구체적인 결과

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

setImageWithURL의 실패 블록에 log 문을 넣으십시오. 'NSLog (@ "% @, 오류. localizedDescription"); 뭐든지? – brynbodayle

+0

"인터넷 연결이 오프라인 인 것 같습니다." 하지만 마지막 항목의 이미지가 잘로드됩니다. 그것이 무엇인지에 관해서는 아무 생각이 없습니다. – Phillip

답변

1

내가이 문제를 발견 한 것 같습니다.

캐시 옵션 ([prefetcher setOptions:SDWebImageMemoryCacheOnly];)을 설정해서는 안되지만 우선 순위를 낮추어야하므로 모든 것이 완벽하게 작동합니다.

+0

SDWebImageMemoryCacheOnly 대신 SDWebImageCacheMemoryOnly가되어야한다고 생각합니다. –

관련 문제