J'ai ce 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!)
}
}
}
Je reçois cet avertissement dans Swift 3:
'default' a été déconseillé dans iOS 8.0: utilisez plutôt des attributs qos
sur la première ligne.
Je n'ai pas encore trouvé de solution. A quelqu'un?
essayez qos: DispatchQoS.QoSClass.default
au lieu 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!)
}
}
}
Au lieu d'utiliser le paramètre priorité:
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
// ...
}
utilisez qos
paramètre qui utilise une énumération différente DispatchQoS.QoSClass.default
mais vous pouvez également utiliser sa valeur d'énumération simplement .default
:
DispatchQueue.global(qos: .default).async {
// ...
}
Swift 3 a apporté de nombreux changements sur GCD (Grand Central Dispatch).
Le code ci-dessous est testé pour Swift 3.0 sur 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
}
}
où propriété de QoS sont:
background, utility, `default`, userInitiated, userInteractive and unspecified
Reportez-vous à cette document Apple pour plus de détails.
Si vous créez une propriété à l'aide de Dispatch Framework et mettez à jour l'interface utilisateur avec une animation dans une fonction, cela pourrait ressembler à ceci.
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)
})
})
}