J'essaie de rendre certaines vues dans un fil de fond pour ne pas affecter le fil principal. Ce n'était jamais un problème avant Xcode 9.
DispatchQueue.global(qos: .background).async {
let customView = UIView(frame: .zero)
DispatchQueue.main.async {
self.view.addSubview(customView)
}
}
UIView.init(frame :) doit être utilisé uniquement à partir du thread principal.
Cette erreur se produit dans la deuxième ligne.
Mise à jour
La pomme UIView
La documentation dit en fait dans le Considérations sur le threading section :
Les manipulations de l'interface utilisateur de votre application doivent avoir lieu sur le thread principal. Ainsi, vous devez toujours appeler les méthodes de la classe UIView à partir du code s'exécutant dans le thread principal de votre application. La seule fois où cela n'est pas strictement nécessaire est lors de la création de l'objet de vue lui-même, mais toutes les autres manipulations doivent avoir lieu sur le thread principal.
0 votes
J'étais au courant de cette nouvelle règle, mais je me demande quelle part du travail vous pouvez encore décharger sur un fil de fond...