Como funciona defer
Execute código ao sair de um escopo, independentemente do caminho seguido.
Como funciona defer é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
O que defer faz
Um bloco defer agenda a execução de um código quando o escopo atual está prestes a ser encerrado, independentemente da forma como isso acontece.
func demo() {
defer { print("cleanup") }
print("work")
}
demo()Executado ao sair do escopo
O código adiado é executado depois que o restante do escopo termina, imediatamente antes de o controle sair dele.
func greet() {
defer { print("goodbye") }
print("hello")
}
greet()Adiado após o fluxo normal
Mesmo com várias instruções, o corpo de defer é executado por último.
func process() {
defer { print("3 deferred") }
print("1 start")
print("2 middle")
}
process()Adiamento dentro de um laço
Um defer dentro do corpo de um laço é executado ao final de cada iteração.
for i in 1...3 {
defer { print("end of iteration", i) }
print("start of iteration", i)
}Adiamento dentro de uma condicional
O escopo pode ser qualquer bloco. Um defer em um if é executado quando esse bloco condicional termina.
func check(_ flag: Bool) {
if flag {
defer { print("leaving if block") }
print("inside if")
}
print("after if")
}
check(true)Capturando os valores atuais
O bloco adiado captura as variáveis por referência, portanto vê os valores delas no momento em que é executado.
func counterDemo() {
var count = 0
defer { print("final count:", count) }
count = 5
}
counterDemo()O adiamento não atrasa o trabalho
defer não é executado de forma assíncrona. Ele é executado de forma síncrona na saída do escopo, antes de a função retornar ao chamador.
func order() {
defer { print("B") }
print("A")
}
order()
print("C")Uso comum: associar configuração e desmontagem
Coloque a desmontagem imediatamente ao lado da configuração para manter as duas visual e logicamente associadas.
func session() {
print("open session")
defer { print("close session") }
print("do work")
}
session()Adiamento em um bloco do
Um defer dentro de um bloco do é executado quando o bloco termina.
func run() {
do {
defer { print("do block cleanup") }
print("inside do")
}
print("after do")
}
run()Várias instruções no adiamento
Um bloco de adiamento pode conter várias instruções; todas são executadas juntas na saída do escopo.
func multi() {
defer {
print("step 1 of cleanup")
print("step 2 of cleanup")
}
print("main work")
}
multi()Por que usar o adiamento
defer garante que a limpeza aconteça independentemente de como o escopo termine, reduzindo a possibilidade de esquecê-la em algum caminho.
func guaranteed() {
defer { print("always runs") }
print("body")
}
guaranteed()Verificação rápida
Teste o momento de execução do adiamento.
Recapitulação
defer agenda a execução de código para o final do escopo atual, independentemente de como ele termine. É executado de forma síncrona, por último no escopo, e é ideal para manter a desmontagem próxima da configuração.
func demo() {
defer { print("last") }
print("first")
}
demo()Perguntas Frequentes
A aula “Como funciona defer” é grátis?
Sim — o texto completo de “Como funciona defer” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Como funciona defer”?
Execute código ao sair de um escopo, independentemente do caminho seguido. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Como funciona defer”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Como funciona defer
- Ordenação de Vários Blocos defer
- defer para Limpeza de Recursos
- defer com Erros e Retornos Antecipados