Это вообще хорошая идея, чтобы позвонить -[NSRunLoop runUntilDate:]
?Кажется, он работает без каких-либо проблем, но меня нервирует, что цикл выполнения запускается из цикла выполнения.
Дополнительная информация:
У меня есть проект, который сейчас загружаетсяданные из службы REST.Одним из важнейших элементов информации, который необходимо получить, является диапазон дат с действительными данными.Это очень маленький объем данных, который нужно получить только один раз, поэтому я решил, что лучший способ обработать его - это загрузить свойство, если локальная переменная nil
.Я использую ASIHTTPRequest
и ASINetworkQueue
, поэтому по умолчанию все является асинхронным, и для того, чтобы это работало, это свойство не может возвращаться, пока данные не будут загружены и обработаны.Вот схема моего кода, имена переменных были изменены, чтобы защитить невинных:
__block BOOL isWorking = YES;
__block ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:/*actual URL*/] autorelease];
[request setCompletionBlock:^{
// set local variable
isWorking = NO;
}];
[request setFailedBlock:^{
// show alert to user
isWorking = NO;
}];
[queue addOperation:request];
while (isWorking) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
}
Опять же, это работает нормально.Есть ли потенциальные проблемы с использованием этого подхода?