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