Sobes.tech
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.