Em Swift, "synchronous" e "asynchronous" referem-se à forma como o código é executado em relação ao fluxo de execução principal. Aqui estão as principais diferenças entre eles, juntamente com exemplos simples:

Synchronous (Síncrono):

Exemplo em Swift:

func syncFunction() {
    print("Início da função síncrona")
    // Alguma operação bloqueante
    sleep(2)
    print("Fim da função síncrona")
}

print("Antes da chamada síncrona")
syncFunction()
print("Depois da chamada síncrona")

Saída:

Antes da chamada síncrona
Início da função síncrona
Fim da função síncrona
Depois da chamada síncrona

Asynchronous (Assíncrono):

Exemplo em Swift usando GCD (Grand Central Dispatch):

func asyncFunction() {
    print("Início da função assíncrona")
    // Realiza uma operação assíncrona em segundo plano
    DispatchQueue.global().async {
        sleep(2)
        print("Fim da operação assíncrona")
    }
}

print("Antes da chamada assíncrona")
asyncFunction()
print("Depois da chamada assíncrona")

Saída:

Antes da chamada assíncrona
Início da função assíncrona
Depois da chamada assíncrona
Fim da operação assíncrona

No exemplo assíncrono, a função assíncrona não espera a conclusão da operação em segundo plano, permitindo que o programa continue sua execução enquanto aguarda a conclusão da tarefa assíncrona.

Grand Central Dispatch (GCD)

O Grand Central Dispatch (GCD) é uma tecnologia desenvolvida pela Apple para simplificar a programação concorrente em sistemas operacionais macOS, iOS e outros relacionados. O GCD fornece uma abstração de baixo nível para gerenciar operações concorrentes, facilitando o desenvolvimento de aplicativos eficientes e responsivos.

Principais características do GCD: