A Macro @Observable
Torne uma classe observável para que as visualizações a acompanhem.
A Macro @Observable é uma aula grátis de SwiftUI Academy no CoddyKit. Esta é a aula 2 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 SwiftUI Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SwiftUI Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
The Problem to Solve
A plain model class holds data, but SwiftUI will not redraw when that data changes. We need to make the class observable.
Meet @Observable
The @Observable macro marks a class so SwiftUI watches its properties and refreshes any view that reads them. ✨
@Observable
class Counter {
var count = 0
}What a Macro Does
A macro generates extra code for you at compile time, so one short attribute adds all the change-tracking plumbing.
Importing Observation
The macro lives in the Observation framework, so add an import at the top of the file before you use it.
import Observation
@Observable
class Counter { var count = 0 }No Wrappers Needed
With @Observable you mark plain stored properties. No per-property wrapper is required for SwiftUI to track them.
@Observable
class Counter {
var count = 0
var name = "Taps"
}Reading Triggers Tracking
SwiftUI only refreshes for the properties a view actually reads in its body, so unused values cost you nothing.
Writing Triggers Updates
When you change a tracked property, every view that reads it is automatically scheduled to redraw.
model.count += 1 // views reading count refreshComputed Properties Work Too
A computed property built from tracked values also updates views, since reading it reads its inputs.
@Observable
class Counter {
var count = 0
var label: String { "Taps: \(count)" }
}Granular by Default
Tracking is granular: changing one property only refreshes views that read that property, not the whole screen.
Replacing ObservableObject
@Observable is the modern replacement for the older ObservableObject plus @Published pattern, with far less boilerplate.
Ignoring a Property
Mark a value with @ObservationIgnored when it should not trigger updates, like a cache or internal scratch value.
@Observable
class Counter {
@ObservationIgnored var cache = 0
}Quick Check
Time to check your grip on @Observable.
Recap
You made a model @Observable, so SwiftUI tracks the properties your views read and redraws them precisely when those values change. 🎉
Perguntas Frequentes
A aula “A Macro @Observable” é grátis?
Sim — o texto completo de “A Macro @Observable” é 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 SwiftUI Academy, atualize para CoddyKit PRO. O curso de SwiftUI Academy inclui 4 aulas no total.
O que vou aprender em “A Macro @Observable”?
Torne uma classe observável para que as visualizações a acompanhem. Você pratica SwiftUI 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 SwiftUI Academy?
Nenhuma experiência prévia é necessária. SwiftUI 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 2 de 4.
Quanto tempo leva a aula “A Macro @Observable”?
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 SwiftUI Academy?
Sim. Cada aula de SwiftUI 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
- Do Estado da Visualização para uma Classe de Modelo
- A Macro @Observable
- @State para Objetos de Propriedade
- Compartilhando Modelos via @Environment