custom bar ios warnings swift3 dispatch-async deprecation-warning

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!) } } }