我已经采用了一堆代码,它使用AFNetworking进行REST调用。问题是所有这些调用都是以同步方式进行的。从异步到同步的哪种方式使AFJSONOperation最佳?
到目前为止,我已经看过基于GCD的示例,但我认为它并不简单,因为它不容易阅读。我会转而设置几个NSOperation对象来纠缠它们直到响应被捕获。
我知道这个主题是有争议的,但我想探索这种思维方式。
答案 0 :(得分:0)
如果你想要同步,那么NSOperations与它的工具完全相反。 NSOperationQueue建立在GCD之上,并且只能以异步方式运行(事实上,这就是该类首先存在的原因)。您可以将NSOperationQueue子类化以提供某种程度的同步性,但它也必须通过GCD。查看dispatch_sync()
和dispatch_barrier_sync()
,您可以使用它在-main
返回的队列上调用给定操作的dispatch_get_current_queue()
方法。
但所有这些对于解决竞争条件来说太过分了。相反,请查看相关操作,甚至维护异步性,但使用串行队列,以便维护执行顺序。