많은 추천 및 권장 사항을 거친 후 내 앱에서 SDWebImage 프레임 워크를 구현하려고합니다. 서버에서 이미지를 다운로드 할 수는 있지만 이미지의 크기가 다르기 때문에 호출하는 순서대로 다운로드되지 않습니다. 여기 SDWebImage를 사용하여 이미지로드
가 참조 할 수 있도록 프레임 워크입니다 : 당신이 인쇄 라인에서이 증거를 볼 수있는 https://github.com/rs/SDWebImage:
-(void)sdWebLoadImages:(NSMutableArray*)imagesURLS{
[_loadedImages removeAllObjects];
NSMutableArray *tempArray = [[NSMutableArray alloc]init];
_loadedImages = tempArray;
for (int i=0;i<imagesURLS.count;i++){
[_manager downloadWithURL:[imagesURLS objectAtIndex:i]
options:0
progress:^(NSUInteger receivedSize, long long expectedSize)
{
// progression tracking code
}
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType,BOOL finished)
{
if (image && finished)
{
[_loadedImages addObject:image];
NSLog(@"SD LOAD %i array count = %i",i,_loadedImages.count);
}
}];
}
}
어떻게 : 아래
2013-08-20 11:11:01.785 Project[10785:c07] SD LOAD 1 array count = 1
2013-08-20 11:11:02.668 Project[10785:c07] SD LOAD 0 array count = 2
2013-08-20 11:11:02.946 Project[10785:c07] SD LOAD 3 array count = 3
2013-08-20 11:11:03.306 Project[10785:c07] SD LOAD 2 array count = 4
2013-08-20 11:11:03.862 Project[10785:c07] SD LOAD 4 array count = 5
2013-08-20 11:11:04.094 Project[10785:c07] SD LOAD 5 array count = 6
2013-08-20 11:11:04.793 Project[10785:c07] SD LOAD 6 array count = 7
2013-08-20 11:11:04.837 Project[10785:c07] SD LOAD 7 array count = 8
2013-08-20 11:11:05.046 Project[10785:c07] SD LOAD 8 array count = 9
2013-08-20 11:11:05.428 Project[10785:c07] SD LOAD 9 array count = 10
내 방법입니다 나는이 문제를 해결했다. (for for loop logic에 뭔가있는가?). 또한 버튼을 클릭 할 때 모든 다운로드를 취소하려고하는데 [_manager cancelAll]을 (를) 사용하고 있지만 작동하지 않는 것 같습니다. 이유가 무엇입니까?
고마워요!
ADDED :
문제 이제 관리자가 어떻게 유지하는 나는 확실하지 1로 setMaxConcurrentOperationCount을 설정 한 후에도 주문이 중단 될 원인, 먼저 배열로 캐시 된 모든 이미지를 삽입하는 것입니다 캐시 된 이미지에서도 순서대로 다운로드합니다.
Go to SDWebImageDownloader.m
난 당신이 최신 SDWebImage 라이브러리를 사용하는 가정입니다 :만큼 얼음으로 간단하고 '저스틴 Amberson'에 의해 지적
이 프레임 워크에 익숙하지 않습니다. NSOperationQueue를 사용하고 있다면 maxOperations = 1이되도록 설정할 수 있습니까? 그렇게하면 일련의 병렬 작업은 실행되지 않지만 대기열에 넣은 순서대로 수행합니다. – Justin
[_manager downloadWithUrl ...]은 내 operationQ에 추가 할 수 있다고 생각하는 작업을 반환하지만 시도 할 때 충돌이 발생하므로이 시점에서 다소 피할 수 있습니다. – royherma