我有这段代码:
eval
我在Swift 3中收到此警告:
在iOS 8.0中不推荐使用'default':改为使用qos属性
在第一行。
尚未找到解决方案。有人吗?
答案 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。