Junior — Middle
Когда допустимо выполнять обновление пользовательского интерфейса вне основного потока исполнения?
sobes.tech IA
Réponse de l'IA
En iOS, la mise à jour de l'interface utilisateur doit être effectuée uniquement sur le thread principal, car UIKit n'est pas thread-safe. Une exception peut être lorsque vous utilisez des mécanismes ou frameworks spéciaux qui permettent de mettre à jour l'UI de manière asynchrone, mais en coulisse, ils basculent toujours sur le thread principal.
Par exemple, si vous chargez des données dans un thread en arrière-plan, après avoir obtenu le résultat, vous devez basculer sur le thread principal pour mettre à jour l'UI:
DispatchQueue.global().async {
// Chargement des données
let data = loadData()
DispatchQueue.main.async {
// Mise à jour de l'UI
self.label.text = data
}
}
Ainsi, la mise à jour de l'UI en dehors du thread principal n'est autorisée que si vous basculez explicitement de retour sur le thread principal avant de modifier les éléments de l'interface.