0Pricing
Swift Academy · Aula

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 tab

Identidade 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 identities

AnyView 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

  1. Entendendo a Identidade das Views
  2. Minimização da Reavaliação de Body
  3. Views Equatable e Escopo de @State
  4. Criação de Perfil com o Instrument do SwiftUI
← Voltar para Swift Academy