0Pricing
SwiftUI Academy · Урок

Макрос @Observable

Сделайте класс наблюдаемым, чтобы представления отслеживали его изменения.

«Макрос @Observable» — бесплатный урок SwiftUI Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SwiftUI Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SwiftUI Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

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 refresh

Computed 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. 🎉

Часто задаваемые вопросы

Урок «Макрос @Observable» бесплатный?

Да — полный текст урока «Макрос @Observable» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SwiftUI Academy, подпишись на CoddyKit PRO. Курс SwiftUI Academy содержит 4 уроков всего.

Чему я научусь в уроке «Макрос @Observable»?

Сделайте класс наблюдаемым, чтобы представления отслеживали его изменения. Ты практикуешь SwiftUI Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SwiftUI Academy?

Предыдущий опыт не требуется. SwiftUI Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Макрос @Observable»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SwiftUI Academy?

Да. Каждый урок SwiftUI Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. От состояния представления к классу модели
  2. Макрос @Observable
  3. @State для принадлежащих объектов
  4. Общие модели через @Environment
← Назад к SwiftUI Academy