代码之家  ›  专栏  ›  技术社区  ›  Paul T.

不同请求的不同DispatchQueue

  •  1
  • Paul T.  · 技术社区  · 7 年前

    我想对不同的客户有不同的优先级 http requests 我希望能够立即停止/暂停一些请求,如果我有一个 High 优先事项我本来打算使用不同的方法,但现在似乎所有这些方法都被弃用了:

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

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

    有什么方法可以控制 调度队列 (或 操作队列 )请求在哪里执行?

    1 回复  |  直到 7 年前
        1
  •  1
  •   yageek    7 年前

    你应该/可以使用 NSURLSessionTask/URLSessionTask 从网络中获取数据的子类。你可以很容易地把它们封装在一个 NSOperation/Operation slide .

    您只需添加取消支持即可。您可以在 第节 NSOperation documentation .

    要处理优先级,您有几个工具:

    • 处理之间的优先级 OperationQueue 实例,您可以将它们赋予不同的属性 qualityOfService
    • 处理之间的优先级 Operation 实例,您可以将它们赋予不同的属性 服务质量 , queuePriority threadPriority 价值观

    有关这些参数的其他说明,请参阅 Prioritize Work with Quality of Service Classes section iOS应用程序能效指南 .