Equivalente ao dispatch_after em Swift: como executar código com atraso via GCD?
Olá a todos! Sou novo em Swift e antes escrevia em Objective-C. Lá, para atrasar a execução de código, eu usava dispatch_after, e era simples:
```objc
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"Passaram 2 segundos");
});
```
Agora estou migrando para Swift, mas não consigo encontrar um equivalente direto. Pesquisei e vi que dispatch_after não existe mais em Swift, e é preciso usar outra coisa. Tentei escrever assim:
```swift
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
print("Passaram 2 segundos")
}
```
Parece funcionar, mas não tenho certeza se está correto. Especialmente me confunde a sintaxe com `deadline: .now() + 2.0` — não entendo como isso funciona. Por exemplo, se eu precisar executar código após 0.5 segundos, basta escrever `.now() + 0.5`? Ou existem algumas armadilhas com atraso em threads de background?
Também quero perguntar: como cancelar corretamente uma tarefa agendada? Em Objective-C, eu podia salvar o dispatch_block_t e escre