Avatar ·

Analogique de dispatch_after en Swift : comment exécuter du code avec un délai via GCD ?

Bonjour à tous ! Je suis débutant en Swift et j'écrivais auparavant en Objective-C. Là-bas, pour retarder l'exécution du code, j'utilisais dispatch_after, et c'était simple : ```objc dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"2 secondes se sont écoulées"); }); ``` Maintenant, je passe à Swift, mais je ne trouve pas d'analogue direct. J'ai cherché sur Google que dispatch_after n'existe plus en Swift, et qu'il faut utiliser autre chose. J'ai essayé d'écrire ceci : ```swift DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { print("2 secondes se sont écoulées") } ``` Cela semble fonctionner, mais je ne suis pas sûr que ce soit correct. La syntaxe avec `deadline: .now() + 2.0` me déroute particulièrement — je ne comprends pas comment cela fonctionne. Par exemple, si je dois exécuter du code après 0,5 seconde, je dois simplement écrire `.now() + 0,5` ? Ou y a-t-il des pièges avec le délai sur les threads d'arrière-plan ? Je voudrais aussi demander : comment annuler correctement une tâche planifiée ? En Objective-C, je pouvais sauvegarder dispatch_block_t et écrire