Как вы загружаете изображения в соответствии с 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
, чтобы при загрузке изображений. Однако, когда запросы уже кэшированы, блоки успеха обрабатываются не в порядке. Я подозреваю, что это ограничение NSOperation
, а не AFNetworking.
Я что-то упустил?