ios - bar - Swift 3 advertencia para el envío asincrónico
custom view navigation bar swift (4)
Tengo este código:
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!)
}
}
}
Recibo esta advertencia en Swift 3:
"predeterminado" quedó obsoleto en iOS 8.0: usar atributos de qos en su lugar
en la primera linea
Aún no encontré una solución. Alguien tiene?
A continuación, se prueba el código para Swift 3.0 en 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
}
}
donde la propiedad de QoS es:
background, utility, `default`, userInitiated, userInteractive and unspecified
Consulte este documento de apple para más detalles.
En lugar de usar el parámetro de prioridad :
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
// ...
}
use el parámetro qos
que usa una enum diferente DispatchQoS.QoSClass.default
pero también puede usar su valor enum como solo .default
:
DispatchQueue.global(qos: .default).async {
// ...
}
Swift 3 ha traído muchos cambios en GCD (Grand Central Dispatch).
Si está creando una propiedad utilizando el Marco de distribución y actualizando la interfaz de usuario con algunas animaciones dentro de una función, podría verse más o menos así.
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)
})
})
}
intente qos: DispatchQoS.QoSClass.default
lugar de 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!)
}
}
}