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