使用GCD的NSOperation,确保所有在同一个线程上

我有一个'并发' NSOperation ,在它的工作过程中,它使用了一些内部使用GCD的控制器类。 当这些控制器类返回完成块时,完成块位于另一个线程上。

我知道我可以将当​​前线程存储在操作启动方法中,然后运行performSelectorOnThread:但理想情况下,我想将完成包装在GCD块中,并在开始操作时将其分派到相同的线程中。 这甚至可能与GCD,因为我只能指定一个队列分派。

把这个工作带回到开始运行的同一个线程上的最好方法是什么? 除了我已经build议的,除非这是最好的方法。

当操作完成时,UI更新或任何其他相关的事情必须在主线程上完成。 以下链接可能会对您有关CGD有用。

http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial

我不认为这是真的可行/可取的。 从iOS 4开始,NSOperation使用GCD,而GCD正在pipe理我的线程 – 我不认为我应该保留对它们的引用。

我find了一些在特定线程上执行代码块的util方法。 请参阅Mike Ash的“实用块”或本文所做的类似的事情。

由于我的目标是保持我的核心数据调用在同一个线程,而是select升级我的代码,使用NSPrivateQueueConcurrencyType使用父/子托pipe对象上下文,然后在托pipe对象上下文中使用performBlock:来确保我所有的callback核心数据正确执行单独的线程。