Sobes.tech
Middle

შენიღბის ოპერაციებს შესაძლებელია განახორციელოთ ცალკე ნაკადებში, ძირითადი შესრულების ნაკადის გამოყენების გარეშე?

sobes.tech AI

პასუხი AI-სგან

iOS-ში CALayer-თან ოპერაციები, როგორიცაა ფენის თვისებების შეცვლა (მაგალითად, პოზიცია, გამჭვირვალობა, ტრანსფორმაცია), უნდა შესრულდეს მთავარი ნაკადში, რადგან UIKit და Core Animation არ არის ნაკადების უსაფრთხო. თუმცა, მძიმე გამოთვლები ან მონაცემების მომზადება ფენისთვის (მაგალითად, გამოსახულებების გენერირება, გზების გამოთვლა) შეიძლება შესრულდეს ფონურ ნაკადში, ხოლო ფენის განახლებები უკვე მთავარი ნაკადში უნდა განხორციელდეს.

მაგალითი:

DispatchQueue.global().async {
    // მძიმე გამოთვლები
    let image = generateImage()
    DispatchQueue.main.async {
        layer.contents = image.cgImage
    }
}

ამ გზით, პირდაპირი ოპერაციები ფენის მიმართ სხვადასხვა ნაკადებში ვერ შესრულდება, მაგრამ მონაცემების მომზადება — შესაძლებელია.