Swift 3 分派异步警告

Swift 3 warning for dispatch async

我有这个代码:

DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
                let url = URL(string: itemImageURL )
                let data = try? Data(contentsOf: url!)
                if data != nil {
                    DispatchQueue.main.async{
                        cell.advImage!.image = UIImage(data: data!)
                    }
                }
            }

我在 Swift 3:

收到此警告

'default' was deprecated in iOS 8.0: Use qos attributes instead

在第一行。

还没找到解决办法。有人吗?

尝试 qos: DispatchQoS.QoSClass.default 而不是 priority: DispatchQueue.GlobalQueuePriority.default

DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async {
            let url = URL(string: itemImageURL )
            let data = try? Data(contentsOf: url!)
            if data != nil {
                DispatchQueue.main.async{
                    cell.advImage!.image = UIImage(data: data!)
                }
            }
        }

而不是使用优先级参数:

DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
 // ...
}

使用 qos 使用不同枚举的参数 DispatchQoS.QoSClass.default 但您也可以使用其枚举值正如 .default:

DispatchQueue.global(qos: .default).async {
 // ...
}

Swift 3对GCD(Grand Central Dispatch)带来了很多变化。

如果您正在使用 Dispatch Framework 创建 属性 并使用函数中的一些动画更新 UI,它可能看起来像这样。

let queue = DispatchQueue.global(qos: DispatchQoS.QoSClass.default)
    // dispatch_after says that it will send this animation every nsec
    queue.asyncAfter(deadline: when) {
        DispatchQueue.main.async(execute: {
            self.animate(withDuration: 0.5, animations: {
                self.image.setWidth(35)
                self.image.setHeight(35)
            })
        })
    }

下面的代码在 Xcode 8.2.1

上针对 Swift 3.0 进行了测试
DispatchQueue.global(qos: .background).async {
            let img2 = Downloader.downloadImageWithURL(imageURLs[1])

            // Background Thread
            DispatchQueue.main.async {

                // Run UI Updates
                self.imageView2.image = img2
            }
        }

其中 QoS 的 属性 是:

background, utility, `default`, userInitiated, userInteractive and unspecified

有关详细信息,请参阅此 apple document