Sobes.tech
Middle — Middle+

Czy można wykonywać operacje na interfejsie graficznym poza głównym wątkiem w aplikacji?

sobes.tech AI

Odpowiedź od AI

W iOS wszystkie operacje na interfejsie graficznym (UI) muszą być wykonywane wyłącznie w głównym wątku (main thread). Wynika to z faktu, że UIKit nie jest bezpieczny dla wątków, a wszelkie zmiany UI z wątków tła mogą prowadzić do nieprzewidywalnego zachowania lub awarii aplikacji.

Jeśli konieczne jest zaktualizowanie interfejsu po wykonaniu zadania w tle, należy wrócić do głównego wątku, na przykład używając DispatchQueue.main.async:

DispatchQueue.global().async {
    // Zadanie w tle
    let data = fetchData()
    
    DispatchQueue.main.async {
        // Aktualizacja UI
        self.label.text = data
    }
}