Sobes.tech
Middle — Middle+

Կարող են արդյոք գրաֆիկական ինտերֆեյսի հետ գործառույթներ կատարել ծրագրում գլխավոր հոսքից դուրս?

sobes.tech AI

Պատասխան AI-ից

iOS-ում, բոլոր գրաֆիկայի ինտերֆեյսի (UI) գործառույթները պետք է կատարվեն բացառապես գլխավոր թելում (main thread): Դա կապված է այն բանի հետ, որ UIKit-ը չի ապահովում թելային անվտանգություն, և ցանկացած UI փոփոխություն ֆոնային թելերից կարող է հանգեցնել անսպասելի վարքագծի կամ հավելվածի կոտրվելու:

Եթե անհրաժեշտ է թարմացնել ինտերֆեյսը ֆոնային գործառույթի ավարտից հետո, պետք է վերադառնալ գլխավոր թել, օրինակ՝ օգտագործելով DispatchQueue.main.async:

DispatchQueue.global().async {
    // Ֆոնային գործառույթ
    let data = fetchData()
    
    DispatchQueue.main.async {
        // UI թարմացում
        self.label.text = data
    }
}