如何在没有操作队列的情况下在GCD中取消请求

时间:2015-06-14 06:28:48

标签: ios objective-c rest grand-central-dispatch

我正在实施一个使用REST服务发出请求的iOS应用。我想在新的呼叫时取消之前的所有REST呼叫。我可以在没有操作队列的GCD中的全局队列中执行此操作吗?感谢

1 个答案:

答案 0 :(得分:1)

GCD不提供取消阻止的API。因此,您必须自己实施此取消。

最简单的方法可能是设置一个全局标记'cancelled'并检查你的块内部。如果设置了标志,则立即从您的块返回。然后在所有块完成后,您可以重置标志并将新块排入队列。

尽管听起来很简单,但这需要一些非常重要的代码。使用NSOperationQueue会更容易,而不是在普通GCD上重新实现其功能。