Solicitudes de grupo o lote con AFNetworking 2.0

Estoy tratando de averiguar cuál es la mejor práctica para agrupar o procesar varias requestes GET utilizando AFNetworking 2.0. Todas las requestes GET deben completarse antes de que el código pueda continuar, pero no tienen que ejecutarse una tras otra. En este momento para requestes individuales, estoy usando AFHTTPRequestOperationManager (ver también aquí: Subclass AFHTTPRequestOperationManager? ).

Una posibilidad se describe aquí, usando un dispatch_group: ¿Cómo solicitar un lote con AFNetworking 2? , pero eso es para AFHTTPSessionManager , que es solo iOS7. Mi aplicación todavía se dirige a iOS6 también, así que necesito usar AFHTTPRequestOperationManager .

¿Está utilizando un dispatch_group el path a seguir? ¿O hay algo incorporado en AFNetworking que he pasado por alto y puedo usar para esto?

EDITAR: Todavía no sé cuál es la forma correcta … Por ejemplo, ¿cómo uso un grupo con AFHTTPRequestOperation ?

He intentado lo siguiente, pero el NSLog final ("búsqueda finalizada") siempre se muestra primero, antes de que se muestren todas las respuestas:

 dispatch_queue_t dispatch_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_group_t dispatch_group = dispatch_group_create(); for (Entry *e in self.entries) { dispatch_group_async(dispatch_group, dispatch_queue, ^{ NSString *queryString = [e getQueryString]; NSURL *URL = [NSURL URLWithString: queryString]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; operation.responseSerializer = [AFHTTPResponseSerializer serializer]; operation.completionGroup = dispatch_group; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"%@", responseObject); } failure:nil]; [operation start]; }); } dispatch_group_notify(group, dispatch_get_main_queue(), ^{ NSLog(@"done searching"); }); 

Después de muchos bashs, se me ocurrió lo siguiente, que hace exactamente lo que necesito. Todas las llamadas AFHTTPRequestOperation son atendidas por un cliente único:

 dispatch_group_t dispatchGroup = dispatch_group_create(); for (Entry *e in self.entries) { dispatch_group_enter(dispatchGroup); MyDBClient *dbClient = [MyDBClient shanetworkingClient]; [dbClient searchForQuery: queryString withParameters: nil completion: ^(NSData *data, NSError *error) { if (data) { // process data } else { // deal with error, if any } dispatch_group_leave(dispatchGroup); }]; } dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^{ // update UI here }); 

El código del cliente se basa en el código de ejemplo que encontré aquí: http://nsscreencast.com/episodes/91-afnetworking-2-0

Espero que esto ayude a otros que intentan lograr lo mismo.