Что касается загрузки ресурсов, вы можете использовать AFNetworking для их очереди.
Возможно, вы сможете использовать - (void) enqueueHTTPRequestOperation: (AFHTTPRequestOperation *) операцию AFHTTPClient.
Сначаласоздайте синглтон для хранения собственного AFHTTPClient, например, так:
@interface CustomHTTPClient : NSObject
+ (AFHTTPClient *)sharedHTTPClient;
@end
@implementation CustomHTTPClient
+(AFHTTPClient *)sharedHTTPClient {
static AFHTTPClient *sharedHTTPClient = nil;
if(sharedHTTPClient == nil) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Create the http client
sharedHTTPClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://mybaseurl.com"]];
});
}
return sharedHTTPClient;
}
@end
Затем поставьте в очередь ваши запросы следующим образом:
// Store the operations in case the failure block needs to cancel them
__block NSMutableArray *operations = [NSMutableArray array];
// Add operations for url
for (NSURL *url in urls) {
NSURLRequest *request = [NSURLRequest requestWithURL:url];
__block AFHTTPRequestOperation *operation = [[CustomHTTPClient sharedHTTPClient]
HTTPRequestOperationWithRequest:request
success:^( AFHTTPRequestOperation *operation , id responseObject ){
// Do something
}
failure:^( AFHTTPRequestOperation *operation , NSError *error ){
// Cancel all operations if you need to
for (AFHTTPRequestOperation* operation in operations) {
[operation cancel];
}
}];
[operations addObject:operation];
}
for (AFHTTPRequestOperation* operation in operations) {
[[CustomHTTPClient sharedHTTPClient] enqueueHTTPRequestOperation:operation];
}
Также есть enqueueBatchOfHTTPRequestOperations: progressBlock: завершение блока: если вам нужно отслеживатьПрогресс.
Проект AFNetworking: https://github.com/AFNetworking/AFNetworking/
Документы AFNetworking: http://afnetworking.org/Documentation/index.html