【发布时间】:2014-05-02 09:48:16
【问题描述】:
我们正在实施一个同步系统,其中一些操作异步发送到 SAP Mobile Platform 服务器,当操作完成时,我们会收到来自专有 SDK 的委托调用。
此委托方法在随机线程上运行,不使用 GCD。
我们希望发送操作 - 然后等到调用委托方法,这意味着操作完成 - 然后在完成(或发生超时)时恢复工作。我知道这可能看起来是同步的,但我们不能允许用户在操作尚未完成时修改数据以确保数据完整性。
Sync ViewController 正在执行一些繁重的同步工作并使用 GCD,并在 UI 线程中更新进度条和一些文本。
现在,当调用委托方法时,我们想调用 Sync ViewController 上的另一个方法,但是这个调用显然是在错误的线程中完成的。
我的问题是如何在调用委托之前 GCD 正在执行它们的同一线程中执行这些方法。
我们尝试过的事情:
- 只是调用方法。然后这些方法在错误的线程中被调用,也就是委托方法所在的线程。
- 在所选线程上发布通知,我们不知道 Sync ViewController 正在工作的确切线程。
有什么想法吗?
【问题讨论】:
-
可能你只需要主线程?然后你可以在
dispatch_asynch中路径dispatch_get_main_queue()。
标签: ios objective-c multithreading delegates