Я использую клиентский объект AFNetworking, который делает асинхронный запрос XML-документа и анализирует его.
Также используйте NSNotificationCenter для отправки уведомления о завершении синтаксического анализа документа.
Есть ли способ дождаться публикации уведомления, не блокируя основной поток?
Например код:
-(void)saveConfiguration:(id)sender {
TLHTTPClient *RESTClient = [TLHTTPClient sharedClient];
// Performs the asynchronous fetching....this works.
[RESTClient fetchActiveUser:[usernameTextField stringValue] withPassword:[passwordTextField stringValue]];
/*
* What do I need here ? while (xxx) ?
*/
NSLog(@"Fetch Complete.");
}
В основном мне интересно, какой код мне нужен в указанной выше области, чтобы гарантировать, что функция ждет до завершения выборки?
Сейчас я увижу "Выборка завершена" в консоли отладки до завершения выборки.
Я попытался добавить флаг BOOL в класс TLHTTPClient:
BOOL fetchingFlag;
а затем пытается:
while([RESTClient fetchingFlag]) { NSLog(@"fetching...); }
Когда этот класс получает уведомление, он устанавливает RESTClient.fetchingFlag = FALSE; который технически должен убить цикл while, верно? За исключением того, что мой цикл while работает бесконечно?!