أمثيل 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 ثم ك...