Junior — Middle
Когда допустимо выполнять обновление пользовательского интерфейса вне основного потока исполнения?
sobes.tech AI
Răspuns de la AI
În iOS, actualizarea interfeței utilizatorului trebuie efectuată numai pe thread-ul principal, deoarece UIKit nu este sigur pentru thread-uri. O excepție poate fi atunci când utilizați mecanisme sau framework-uri speciale care permit actualizarea UI-ului asincron, dar în fundal, acestea se comută tot timpul pe thread-ul principal.
De exemplu, dacă încărcați date într-un thread de fundal, după ce obțineți rezultatul, trebuie să treceți pe thread-ul principal pentru a actualiza UI-ul:
DispatchQueue.global().async {
// Încărcare date
let data = loadData()
DispatchQueue.main.async {
// Actualizare UI
self.label.text = data
}
}
Prin urmare, actualizarea UI-ului în afara thread-ului principal este permisă doar dacă reveniți explicit pe thread-ul principal înainte de a modifica elementele interfeței.