Avatar ·

Como usar corretamente dispatch_sync, dispatch_async, dispatch_after e outras funções GCD em Swift 3, 4 e versões posteriores?

Olá a todos! Estou migrando de Objective-C para Swift e fiquei confuso com o Grand Central Dispatch (GCD) após o lançamento do Swift 3. Antes eu escrevia algo como: ```swift dispatch_async(dispatch_get_main_queue(), { // atualização da UI }) ``` Mas agora o Xcode diz que isso está errado. Entendo que a Apple mudou a API, mas não consigo encontrar uma explicação clara de como trabalhar com GCD no Swift 3, 4 e versões posteriores. Preciso entender: 1. Como executar código assincronamente na main queue (para atualizar a UI)? 2. Como executar código sincronamente (dispatch_sync) em uma background queue? 3. Como criar um delay antes da execução (dispatch_after)? 4. Como criar minha própria queue? Tentei escrever assim, mas não funciona: ```swift DispatchQueue.main.async { // código } DispatchQueue.global().sync { // código } ``` Por favor, explique para um iniciante em Swift como usar GCD corretamente no Swift moderno. De preferência com exemplos que eu possa copiar e usar imediatamente.