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
No answers yet.
Connectez-vous pour laisser une réponse