Devo aspettare che vengano completate diverse richieste di AFNetworking, ho provato a utilizzare i gruppi di dispatch, ma non riesco a farlo correttamente.Attendi il completamento di più richieste AFNetworking
Ecco il mio codice:
dispatch_group_t group = dispatch_group_create();
for (int k = 0; k < 10 ; k++) {
dispatch_group_enter(group);
[[AFHTTPSessionManager manager] GET:@"http://google.com/" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"success");
dispatch_group_leave(group);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"failure");
dispatch_group_leave(group);
}];
}
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
NSLog(@"DONE");
Il problema è che si blocca sul dispatch_group_wait, perché né il blocco di successo, nè i blocchi di guasto sono chiamati.
Come posso risolverlo?
Hai provato a utilizzare dispatch_group_notify? – jtbandes
sì, funziona. Tuttavia ciò non risolve il mio problema. A causa di come è stata costruita l'app (ho ereditato il progetto), ho bisogno di interrompere l'esecuzione del metodo. – guidev
Questo è sfortunato; potresti prendere in considerazione la possibilità di refactoring. Se blocchi il thread, perderai una discussione il cui unico compito è aspettare che un altro thread faccia qualcosa. libdispatch impone un limite di 64 thread che verrà avviato per la manutenzione delle code, quindi a seconda di ciò che sta facendo l'applicazione può diventare un problema. – jtbandes