从主UIViewController
我致电
if (required) [dataDB function];
next command;
....
....
数据库UIViewController
中的
- (void) Function {
Display Alert Message for Processing;
performs steps (takes some time)
....
....
Close Alert Message
}
虽然不应该阻止代码
我需要在调用下一个命令之前完成[dataDB Function];
然而,我需要警报在开始执行步骤之前开始显示。
当[dataDB Function]完成并在几乎立即关闭后显示当前警报。
请帮忙。
答案 0 :(得分:1)
试试这段代码
if (required)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[dataDB function];
dispatch_async(dispatch_get_main_queue(), ^{
next command;
});
});
}
它将创建[dataDB function];
的异步任务,在竞争之后,它将在next command;
答案 1 :(得分:0)
您希望使用GCD调度队列和完成块模式的某种组合。
您应该使用dispatch_async()
对db函数进行排队,以便在后台队列(非并发队列)上进行串行完成,以便按照您发送它们的顺序执行它们。然后,您可以在等待后台队列上的操作完成时在主线程上显示警报。您可以使用传递给其中一个后台操作的完成块在完成时回调主线程,或使用dispatch_group_notify()
功能。
你也可以考虑使用NSOperationQueue
,但我发现只是调度块更容易。