Я создал функцию блокировки блока, использующую библиотеку AFNetworking. Эта функция используется для запроса GET
и используется так.блок ожидания iOS до завершения
[Mics getRequestBLOCK:clientsUrlStr BlockRequest:^(NSString *response) {
//use response here
}];
Все работает отлично, но я действительно получить головную боль, когда я использую этот блок в функции, которые должны возвращать значение, например.
+ (NSArray*)OnlineClients
{
NSString *clientsUrlStr = [NSString stringWithFormat:@"%@/sinch/clients", ROOT_URL];
__block NSArray *clients = [[NSArray alloc] init];
[Mics getRequestBLOCK:clientsUrlStr BlockRequest:^(NSString *response) {
clients = [response componentsSeparatedByString: @","];
}];
return clients;
}
OnlineClients
функция массива всегда возвращает 0 элемент, потому что блок запроса не закончена с завершением.
Итак, как я могу ждать завершения блока, чтобы получить ответный запрос для возврата в функцию?
Я искал различные темы в StackOverflow и google, но не нашел решения.
Пожалуйста, помогите.
Тогда вы не очень хорошо искали. Это, вероятно, наиболее часто задаваемый и ответный вопрос во всех программах iOS для переполнения стека. – matt
Возможный дубликат [iOS: Ожидание завершения блока API и возврат результата] (http://stackoverflow.com/questions/23507331/ios-waiting-for-api-completion-block-and-returning-the-result) – HAS
http://stackoverflow.com/a/23507361/1489885 – HAS