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应用程序能效指南的第页