AFNetworking을 사용하여 이미지를 어떻게 다운로드합니까? "순서대로", 나는 또한 success
블록을 순서대로 실행하는 것을 의미합니다.AFNetworking을 사용하여 순서대로 이미지 다운로드
처음에는 NSOperationQueue
을 사용하고 각각 AFImageRequestOperation
을 다음 종속성으로 설정하는 것으로 충분하다고 생각했습니다. 이렇게하면 :
- (void) downloadImages
{
{ // Reset
[_downloadQueue cancelAllOperations];
_downloadQueue = [[NSOperationQueue alloc] init];
_images = [NSMutableArray array];
}
AFImageRequestOperation *previousOperation = nil;
for (NSInteger i = 0; i < _imageURLs.count; i++) {
NSURL *URL = [_imageURLs objectAtIndex:i];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
AFImageRequestOperation *operation = [AFImageRequestOperation
imageRequestOperationWithRequest:request
imageProcessingBlock:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
[_images addObject:image];
NSLog(@"%d", i);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {}];
if (previousOperation) {
[operation addDependency:previousOperation];
}
previousOperation = operation;
[_downloadQueue addOperation:operation];
}
}
이미지를 다운로드 할 때 i
이 순서대로 인쇄됩니다. 그러나 요청이 이미 캐시 된 경우 성공 블록은 순서가 잘못 처리됩니다. AFNetworking이 아닌 NSOperation
제한으로 판단됩니다.
내가 누락 된 항목이 있습니까?