Ios 不同请求的不同DispatchQueue

Ios 不同请求的不同DispatchQueue,ios,afnetworking,grand-central-dispatch,nsurlsession,nsoperationqueue,Ios,Afnetworking,Grand Central Dispatch,Nsurlsession,Nsoperationqueue,我希望对不同的http请求有不同的优先级,并且我希望能够立即停止/暂停一些请求,并且如果我有一个高优先级的请求,则只执行其中的一些请求。我本来打算使用不同的方法,但现在似乎所有这些方法都被弃用了: 1) 要使用AFHTTPRequestOperation,我可以基于DispatchQueue创建不同的OperationQueue,并在那里添加操作,但在新版本的AFNetworking中不推荐使用它 2) 为不同的同步请求使用具有不同优先级的不同调度队列(使用NSURLConnection.sen

我希望对不同的
http请求有不同的优先级,并且我希望能够立即停止/暂停一些请求,并且如果我有一个
高优先级的请求,则只执行其中的一些请求。我本来打算使用不同的方法,但现在似乎所有这些方法都被弃用了:

1) 要使用
AFHTTPRequestOperation
,我可以基于
DispatchQueue
创建不同的
OperationQueue
,并在那里添加操作,但在新版本的
AFNetworking
中不推荐使用它

2) 为不同的同步请求使用具有不同优先级的不同调度队列(使用
NSURLConnection.sendSynchronousRequest
)(这样,如果我有最高优先级的操作,我可以停止一些队列,并可以立即取消操作)。但据我所知,这种方式已被弃用,因此我无法发送同步请求

我知道有些情况下,使用信号量的请求似乎是同步的,但这只是一种错觉,因为所有的请求都将在我无法控制的队列中执行


是否有任何方法可以控制执行请求的
DispatchQueue
(或
OperationQueue
)子类?

您应该/可以使用
NSURLSessionTask/URLSessionTask
子类从网络获取数据。您可以很容易地将它们封装在一个
NSOperation/Operation
子类中(参见此)

您只需要向其添加取消支持。您可以在响应取消命令的部分中找到有关取消的信息

要处理优先级问题,您有几种工具:

  • 要处理
    OperationQueue
    实例之间的优先级,可以将它们赋予不同的
    qualityOfService
  • 要处理
    操作
    实例之间的优先级,可以将它们赋予不同的
    服务质量
    队列优先级
    线程优先级
有关这些参数的更多说明,请参见iOS应用程序能效指南的第页