QOS_CLASS_USER_INITIATED仅适用于ios 8

时间:2016-10-11 10:02:30

标签: swift

我正在使用以下代码在后台下载图片:

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) {
   //code for image download
}

但收到错误“QOS_CLASS_USER_INITIATED仅适用于ios 8”

2 个答案:

答案 0 :(得分:0)

我认为这与以下事实有关:最近,Apple一直鼓励开发人员尽可能(和适当)切换使用dispatch_queue_t并转移到更高级别的OperationQueue类。

我确定您知道,QOS_CLASS_USER_INITIATED是您在用户启动更改时附加到调度队列的服务质量设置,因此需要以高优先级调度与之相关的操作。与OperationQueue等效的是设置QualityOfService变量:

myOperationQueue.qualityOfService = QualityOfService.userInitiated

看一下OperationQueue参考: https://developer.apple.com/reference/foundation/operationqueue

以下文章概述了如何在dispatch_queue框架内实现服务质量:

https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/PrioritizeWorkWithQoS.html

答案 1 :(得分:0)

试试这段代码:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) {

}