Junior — Middle
Когда допустимо выполнять обновление пользовательского интерфейса вне основного потока исполнения?
sobes.tech MI
Válasz az MI-től
Az iOS-ben a felhasználói felület frissítését csak a fő (fő) szálon szabad végrehajtani, mivel a UIKit nem szálbiztos. Kivétel lehet, ha speciális mechanizmusokat vagy keretrendszereket használ, amelyek lehetővé teszik az UI aszinkron frissítését, de a háttérben mindig átváltanak a fő szálra.
Például, ha adatokat tölt be háttérszálon, akkor az eredmény megszerzése után át kell váltania a fő szálra az UI frissítéséhez:
DispatchQueue.global().async {
// Adatok betöltése
let data = loadData()
DispatchQueue.main.async {
// UI frissítése
self.label.text = data
}
}
Ezért az UI frissítése a fő szálon kívül csak akkor megengedett, ha kifejezetten visszavált a fő szálra az interfész elemeinek módosítása előtt.