2013-10-11 3 views
0

Мне нужно загрузить много URL-адресов с помощью этого метода, и если все URL-адреса загружены, вызывая метод завершения, однако, метод startFetch: является асинхронным методом, так что есть ли способ определить все задачи, которые были выполнены для вызова Завершение завершения?как определить все задачи, выполняемые при вызове метода async?

ответ

2

Не внутри downloadURLs:completionBlock:, нет, но вы можете проверить, находится ли вы в последнем пункте внутри блока завершения startFetch:completion:.

[Downloader startFetch:url completion:^(id response){ 
     [results addObject:response]; 
     if([results count] == [urls count]){ 
      completionBlock(results); 
     } 
}]; 

или

NSMutableArray *results = [NSMutableArray array]; 
id lastURL = [results lastObject]; 
for(NSString *url in urls) { 
    [Downloader startFetch:url completion:^(id response){ 
     [results addObject:response]; 
     if(url == lastURL){ 
      completionBlock(results); 
     } 
    }]; 
} 
Смежные вопросы