Avatar ·

كيفية تنفيذ المهام في الخلفية في Swift (Grand Central Dispatch)

مرحباً بالجميع! أنا مبتدئ في Swift وتطوير iOS. أكتب تطبيقاً بسيطاً لتحميل الصور من الإنترنت. عندما أضغط على زر "تحميل"، تتجمد الواجهة لبضع ثوانٍ حتى تظهر الصورة. سمعت أنه يجب استخدام خيوط الخلفية لمنع حظر الخيط الرئيسي (UI). لكنني لا أفهم كيفية القيام بذلك بشكل صحيح في Swift. إليك الكود الحالي الخاص بي: ```swift import UIKit class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! @IBAction func loadImageTapped(_ sender: UIButton) { // المشكلة: هذا الكود يتم تنفيذه على الخيط الرئيسي let url = URL(string: "https://example.com/large-image.jpg")! let data = try! Data(contentsOf: url) imageView.image = UIImage(data: data) } } ``` لقد جربت استخدام `DispatchQueue.global().async`، ولكن بعد ذلك لا يتم تحديث الصورة. أرجو إرشادي حول كيفية تنظيم تحميل البيانات في الخلفية بشكل صحيح، ثم تحديث واجهة المستخدم؟ وماذا عن ذلك؟