Avatar ·

أمثيل dispatch_after في Swift: كيفية تنفيذ الكود مع تأخير عبر GCD؟

مرحبًا بالجميع! أنا مبتدئ في Swift وكنت أكتب سابقًا بلغة Objective-C. هناك كنت أستخدم dispatch_after لتأخير تنفيذ الكود، وكان الأمر بسيطًا: ```objc dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"مرت ثانيتان"); }); ``` الآن أنتقل إلى Swift، لكنني لا أجد أمثيلًا مباشرًا. بحثت ووجدت أن dispatch_after لم يعد موجودًا في Swift، ويجب استخدام شيء آخر. جربت الكتابة هكذا: ```swift DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { print("مرت ثانيتان") } ``` يبدو أنه يعمل، لكنني لست متأكدًا إذا كان هذا صحيحًا. يربكني بشكل خاص الصياغة مع `deadline: .now() + 2.0` — لا أفهم كيف تعمل. على سبيل المثال، إذا كنت بحاجة لتنفيذ الكود بعد 0.5 ثانية، هل أكتب فقط `.now() + 0.5`؟ أم هناك بعض المزالق المتعلقة بالتأخير على الخيوط الخلفية؟ أيضًا أريد أن أسأل: كيف يمكن إلغاء مهمة مجدولة بشكل صحيح؟ في Objective-C كنت أستطيع حفظ dispatch_block_t ثم ك...