Я создаю приложение, которое извлекает набор результатов из базы данных. Я использую MBProgressHUD, чтобы показать ход запроса с помощью анимации. Метод, который я использую, вызывает анимацию при выполнении метода в другом потоке, и как только это будет сделано, он скрывает анимацию. Мой вопрос, после вызова:Многопоточность в iOS - как заставить поток ждать состояния?
[HUD showWhileExecuting:@selector(getResults) onTarget:self withObject:nil animated:YES];
Я хотел бы, если нет результатов, отображать предупреждение о том, это, и если есть, загрузите следующий вид. До сих пор, у меня есть этот код:
[HUD showWhileExecuting:@selector(getResults) onTarget:self withObject:nil animated:YES];
if(self.thereAreEvents) {
[self performSegueWithIdentifier:@"searchResults" sender:self];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No results" message:@"Sorry, there are no results for your search. Please try again." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
self.thereAreEvents
получает набор в конце метода getResults
. Однако, поскольку этот метод вызывается в другом потоке, эта строка выполнения продолжается и отображает предупреждение, даже если в базе данных есть события.
Итак, у меня есть два вопроса: что является самым простым способом реализации механизма ожидания сигнала в iOS и что является наиболее эффективным способом реализации такого механизма в iOS?
Спасибо!
Я вижу. Мне все еще нужно узнать о программировании для iOS! Я посмотрю на это. Благодаря! – KerrM
Шаблон 'pass a block' относительно новый, но, похоже, направление Apple направлено на новые API в iOS 5. Проверьте, например. 'TWRequest' или' ACAccountStore'. На самом деле, вероятно, было бы лучше использовать 'completeHandler:', а не 'performWhenFinished:' для поставки блока, согласно соглашению, которое, кажется, появляется. – Tommy