Предупреждение Swift 3 для отправки 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' устарел в iOS 8.0: вместо этого используйте атрибуты qos
в первой строке.
Пока не найдено решения. Кто-нибудь?
Ответы
Ответ 1
попробуйте 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!)
}
}
}
Ответ 2
Вместо использования параметра priority:
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
// ...
}
используйте параметр qos
, который использует другое перечисление DispatchQoS.QoSClass.default
, но вы также можете использовать его значение перечисления только как .default
DispatchQueue.global(qos: .default).async {
// ...
}
Swift 3 принес много изменений в GCD (Grand Central Dispatch).
Ответ 3
Если вы создаете свойство с помощью Dispatch Framework и обновляете пользовательский интерфейс с некоторой анимацией внутри функции, она может выглядеть примерно так.
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
Ниже код тестируется на Swift 3.0 на 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
}
}
где свойство QoS:
background, utility, `default`, userInitiated, userInteractive and unspecified
Подробнее см. яблочный документ.