Swift 3警告调度asynchronous

我有这个代码:

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中得到这个警告:

iOS 8.0中不推荐使用“默认”:改为使用qos属性

在第一行。

还没有find解决办法。 有人吗?

尝试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 { // ... } 

使用使用不同的枚举DispatchQoS.QoSClass.default qos参数,但是也可以使用它的枚举值.default

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

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

如果您使用Dispatch Framework创build一个属性,并在一个函数内用一些animation更新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上testingSwift 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 

请参阅这个苹果文件的更多细节。