Avatar ·

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