Middle — Middle+
Ar galima atlikti operacijas su grafinės sąsajos elementais už pagrindinio srauto ribų programoje?
sobes.tech AI
Atsakymas iš AI
iOS, visos su grafinės sąsajos (UI) operacijos turi būti vykdomos tik pagrindiniame sraute (main thread). Tai susiję su tuo, kad UIKit nėra srautinė saugi, ir bet kokie UI pakeitimai iš foninių srautų gali sukelti nenuspėjamą elgesį arba programos avariją.
Jei reikia atnaujinti sąsają po foninio užduoties vykdymo, reikia grįžti atgal į pagrindinį srautą, pavyzdžiui, naudojant DispatchQueue.main.async:
DispatchQueue.global().async {
// Foninė užduotis
let data = fetchData()
DispatchQueue.main.async {
// UI atnaujinimas
self.label.text = data
}
}