发送异步的Swift 3警告

时间:2016-09-30 11:59:40

标签: ios warnings swift3 dispatch-async deprecation-warning

我有这段代码:

eval

我在Swift 3中收到此警告:

  在iOS 8.0中不推荐使用

'default':改为使用qos属性

在第一行。

尚未找到解决方案。有人吗?

4 个答案:

答案 0 :(得分:64)

尝试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!)
                }
            }
        }

答案 1 :(得分:5)

而不是使用优先级参数:

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

使用 qos 参数,该参数使用不同的枚举 DispatchQoS.QoSClass.default ,但您也可以将其枚举值用作 {{1 }}

.default

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

答案 2 :(得分:1)

如果您正在使用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)
            })
        })
    }

答案 3 :(得分:1)

下面的代码在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
            }
        }

其中属性是:

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

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