كيفية استخدام dispatch_after في Swift 3 و 4 و 5 للتنفيذ المؤجل؟
الطريقة الصحيحة للتنفيذ المؤجل في Swift 3+
في Swift 3، تم تغيير واجهة برمجة تطبيقات GCD (Grand Central Dispatch) بشكل كبير. لم يعد dispatch_after موجودًا كدالة منفصلة. بدلاً من ذلك، تستخدم الآن أسلوب asyncAfter على كائن DispatchQueue. إليك المثال الصحيح لتأخير التنفيذ لمدة ثانيتين على الـ main thread: ```swift DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { print("مرت ثانيتان") } ``` هذا الكود يعمل في Swift 3 و 4 و 5. يمكنك أيضًا استخدامه مع queues أخرى عن طريق تغيير DispatchQueue.main إلى أي queue تريدها، مثل DispatchQueue.global(). إذا كنت بحاجة إلى تأخير أكثر دقة باستخدام nanoseconds، يمكنك استخدام: ```swift let delay = DispatchTime.now() + Double(Int64(2.0 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) DispatchQueue.main.asyncAfter(deadline: delay) { print("مرت ثانيتان") } ``` لكن الطريقة الأولى (.now() + 2.0) هي الأبسط والأكثر شيوعًا. أتمنى أن يساعدك هذا في نقل كودك!