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
    }
}