可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have this code:
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!) } } }
I get this warning in Swift 3:
'default' was deprecated in iOS 8.0: Use qos attributes instead
on the first line.
Haven't found yet a solution. Has anybody?
回答1:
try qos: DispatchQoS.QoSClass.default
instead of 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!) } } }
回答2:
Instead of using priority parameter:
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async { // ... }
use qos
parameter that uses a different enum DispatchQoS.QoSClass.default
but you can also use its enum value as just .default
:
DispatchQueue.global(qos: .default).async { // ... }
Swift 3 has brought many changes on GCD(Grand Central Dispatch).
回答3:
If you're creating a property using the Dispatch Framework and updating the UI with some animation within a function it might look something like this.
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) }) }) }
回答4:
Below code is tested for Swift 3.0 on Xcode 8.2.1
DispatchQueue.global(qos: .background).async { let img2 = Downloader.downloadImageWithURL(imageURLs[1]) // Background Thread DispatchQueue.main.async { // Run UI Updates self.imageView2.image = img2 } }
where property of QoS are :
background, utility, `default`, userInitiated, userInteractive and unspecified
Refer this apple document for more details.