我们正在实施同步系统,其中某些操作以异步方式发送到SAP Mobile Platform服务器,当操作完成后,我们会收到来自专有SDK的委托调用。
此委托方法在随机线程上运行,而不是使用GCD。
我们希望发送操作 - 然后等待调用委托方法,这意味着操作已完成 - 然后在完成时恢复工作(或发生超时)。我知道这似乎是同步的,但是我们不能允许用户在操作尚未完成时修改数据以确保数据的完整性。
Sync ViewController正在进行一些繁重的同步工作,正在使用GCD,并在UI线程中更新进度条和一些文本。
现在,当调用委托方法时,我们想在Sync ViewController上调用另一个方法,但是这个调用显然是在错误的线程中完成的。
我的问题是如何在调用委托之前在GCD执行它们的同一个线程中执行这些方法。
我们尝试的事情:
有什么想法吗?
答案 0 :(得分:3)
如果您已经在使用GCD,那么您必须知道此工作正在进行的调度队列,因此不仅仅是在上同步或异步调度块的情况队列?
- (void)someDelegateMethod:(id)someValue {
dispatch_async(self.myDispatchQueue, ^{
[self doInterestingThingWith:someValue];
});
}