使AFJSONRequestOperation同步

时间:2013-06-03 11:12:07

标签: objective-c asynchronous grand-central-dispatch nsoperation synchronous

我已经采用了一堆代码,它使用AFNetworking进行REST调用。问题是所有这些调用都是以同步方式进行的。从异步到同步的哪种方式使AFJSONOperation最佳?

到目前为止,我已经看过基于GCD的示例,但我认为它并不简单,因为它不容易阅读。我会转而设置几个NSOperation对象来纠缠它们直到响应被捕获。

我知道这个主题是有争议的,但我想探索这种思维方式。

1 个答案:

答案 0 :(得分:0)

如果你想要同步,那么NSOperations与它的工具完全相反。 NSOperationQueue建立在GCD之上,并且只能以异步方式运行(事实上,这就是该类首先存在的原因)。您可以将NSOperationQueue子类化以提供某种程度的同步性,但它也必须通过GCD。查看dispatch_sync()dispatch_barrier_sync(),您可以使用它在-main返回的队列上调用给定操作的dispatch_get_current_queue()方法。

但所有这些对于解决竞争条件来说太过分了。相反,请查看相关操作,甚至维护异步性,但使用串行队列,以便维护执行顺序。