Entendendo a Identidade das Views
Controle como SwiftUI compara e reutiliza views.
Entendendo a Identidade das Views é 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.
A Identidade Conduz o SwiftUI
O SwiftUI acompanha cada visualização por sua identidade para decidir se deve atualizar uma visualização existente ou criar uma nova.
Acertar a identidade é o fator mais importante para a correção e o desempenho.
Dois Tipos de Identidade
O SwiftUI usa duas formas: identidade estrutural (a posição de uma visualização na árvore de visualizações) e identidade explícita (um identificador atribuído por você).
Identidade Estrutural
Por padrão, a identidade de uma visualização vem do local que ela ocupa na hierarquia. Os ramos do if abaixo criam duas visualizações estruturalmente distintas.
var body: some View {
if isOn {
Text("On") // one identity
} else {
Text("Off") // a different identity
}
}Por Que os Ramos Perdem o Estado
Como cada ramo tem uma identidade estrutural diferente, alternar entre eles destrói a primeira visualização e cria a segunda. Qualquer @State interno é redefinido.
if isExpanded {
DetailView() // new instance each time the branch flips
} else {
SummaryView()
}Identidade Explícita com id()
O modificador .id(_:) atribui uma identidade explícita. Alterar o id informa ao SwiftUI "esta é uma visualização diferente", forçando uma nova instância e a redefinição do estado.
CounterView()
.id(selectedTab) // new identity per tabIdentidade em ForEach
ForEach precisa de uma identidade estável para cada elemento. Use um caminho de chave para um identificador estável, nunca o índice do vetor em coleções mutáveis.
ForEach(items, id: \.id) { item in
RowView(item: item)
}A Armadilha da Identidade pelo Índice
Usar id: \.self em índices ou valores que mudam reordena as identidades quando os dados sofrem mutações, causando animações incorretas e perda de estado.
// Risky if items reorder or values repeat:
// ForEach(0..<items.count, id: \.self) { ... }Identidade e Animação
As animações interpolam entre estados da mesma identidade. Se a identidade mudar, o SwiftUI fará uma transição de inserção/remoção em vez de uma animação suave.
withAnimation {
// same identity -> property animates
// changed id -> transition (fade/slide)
}Modificadores Condicionais Alteram a Identidade
Aplicar um modificador dentro de um if pode alterar a identidade estrutural e redefinir o estado. Prefira uma única visualização com o valor do modificador calculado condicionalmente.
// Better: keep one identity
Text("Hi")
.opacity(isHidden ? 0 : 1)
// Worse: branching creates two identitiesAnyView Apaga Informações de Identidade
Envolver visualizações em AnyView oculta o tipo delas do SwiftUI, reduzindo sua capacidade de compará-las com eficiência. Sempre que possível, use tipos concretos ou @ViewBuilder.
// Prefer @ViewBuilder over returning AnyView
@ViewBuilder
func content() -> some View {
if flag { A() } else { B() }
}Identidade Estável = Estado Estável
A regra geral é: mantenha a identidade estável quando quiser preservar o estado e uma animação suave; altere a identidade deliberadamente quando realmente quiser começar do zero.
Verificação Rápida: Identidade de Visualizações
Teste sua compreensão sobre a identidade das visualizações.
Recapitulação: Entendendo a Identidade de Visualizações
O SwiftUI identifica as visualizações estruturalmente (pela posição na árvore) e explicitamente (por meio de .id). Uma identidade estável preserva @State e permite uma animação suave de propriedades; alterar a identidade redefine o estado e aciona transições.
Atribua identificadores estáveis ao ForEach, evite a identidade baseada em índices para dados mutáveis, minimize ramificações que alternam a identidade e evite AnyView quando um tipo concreto funcionar.
Perguntas Frequentes
A aula “Entendendo a Identidade das Views” é grátis?
Sim — o texto completo de “Entendendo a Identidade das Views” é 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 “Entendendo a Identidade das Views”?
Controle como SwiftUI compara e reutiliza views. 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 “Entendendo a Identidade das Views”?
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
- Entendendo a Identidade das Views
- Minimização da Reavaliação de Body
- Views Equatable e Escopo de @State
- Criação de Perfil com o Instrument do SwiftUI