我正在创建一个从数据库中获取一组结果的应用程序 - 我使用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 2012-03-06 19:46:19
'通过一个区块'模式是相对较新的,但似乎是苹果公司在iOS 5中的新API中领导的方向。 'TWRequest'或'ACAccountStore'。实际上,按照似乎正在出现的惯例,使用'completionHandler:'而不是'performWhenFinished:'来提供块可能会更好。 – Tommy 2012-03-06 19:55:00