0Pricing
Swift Academy · Lekcja

Przechowywane właściwości i obserwatory właściwości

Obserwatory didSet i willSet służące do reagowania na zmiany właściwości.

Przechowywane właściwości i obserwatory właściwości to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Przechowywane właściwości przechowują wartości wewnątrz struktury lub klasy. Obserwatory właściwości — `willSet` i `didSet` — pozwalają reagować na zmianę wartości przechowywanej właściwości.

Przechowywane właściwości

```swift struct Counter { var count: Int = 0 // stored, mutable let name: String // stored, immutable } ``` Każda wartość przypisana za pomocą `let` lub `var` wewnątrz typu jest przechowywaną właściwością.

Obserwator didSet

```swift struct Gauge { var level: Int = 0 { didSet { print("Changed from \(oldValue) to \(level)") } } } var g = Gauge() g.level = 5 // "Changed from 0 to 5" ``` `oldValue` to automatycznie udostępniana poprzednia wartość.

Obserwator willSet

```swift struct Slider { var value: Double = 0.5 { willSet { print("About to change to \(newValue)") } } } ``` `newValue` to automatycznie udostępniana nadchodząca wartość. `willSet` jest wywoływany przed przypisaniem.

Oba obserwatory razem

```swift var temperature: Double = 20 { willSet { print("Will become \(newValue)") } didSet { print("Was \(oldValue)") } } temperature = 25 // Will become 25.0 // Was 20.0 ```

Ograniczanie wartości za pomocą didSet

```swift var volume: Int = 50 { didSet { if volume > 100 { volume = 100 } if volume < 0 { volume = 0 } } } volume = 150 // clamped to 100 ``` To przejrzysty sposób automatycznego wymuszania niezmienników.

Obserwatory w podklasach

Obserwatory właściwości działają również dla dziedziczonych właściwości: ```swift class Base { var x: Int = 0 } class Child: Base { override var x: Int { didSet { print("x changed to \(x)") } } } ```

Obserwatory nie są wywoływane podczas init

```swift struct Model { var value: Int = 0 { didSet { print("changed") } } init(v: Int) { self.value = v } // does NOT trigger didSet } ``` Obserwatory nie są wywoływane podczas początkowego przypisania w `init`.

Przechowywane a obliczane — szybkie rozróżnienie

• Przechowywana: `var x: Int = 0` — ma własne miejsce przechowywania • Obliczana: `var doubled: Int { x * 2 }` — wyliczana przy odczycie, bez własnego miejsca przechowywania • Obserwator: dołączony do przechowywanej właściwości — reaguje na zmiany Nie można dodawać obserwatorów do obliczanych właściwości (mają już `get`/`set`).

Uwaga dotycząca wydajności

Obserwatory właściwości powodują narzut związany z wywołaniem funkcji przy każdym zapisie. W przypadku zapisów wykonywanych bardzo często (np. w fizyce pętli gry) warto rozważyć zwykłą przechowywaną właściwość i jawne wywoływanie logiki aktualizacji, aby uzyskać lepszą wydajność.

Szybkie sprawdzenie

Który obserwator właściwości zapewnia dostęp do **poprzedniej** wartości?

Podsumowanie

Najważniejsze informacje: • Przechowywane właściwości przechowują wartości bezpośrednio • `willSet` jest wywoływany przed zapisaniem nowej wartości; udostępnia `newValue` • `didSet` jest wywoływany po zapisaniu wartości; udostępnia `oldValue` • Obserwatory nie są wywoływane podczas `init` • Świetnie nadają się do skutków ubocznych, takich jak aktualizowanie interfejsu, rejestrowanie i walidacja Dalej: obliczane właściwości.

Często zadawane pytania

Czy lekcja „Przechowywane właściwości i obserwatory właściwości” jest bezpłatna?

Tak — pełny tekst „Przechowywane właściwości i obserwatory właściwości” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Przechowywane właściwości i obserwatory właściwości”?

Obserwatory didSet i willSet służące do reagowania na zmiany właściwości. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Przechowywane właściwości i obserwatory właściwości”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Inicjalizatory składowe i niestandardowe inicjalizatory
  2. Przechowywane właściwości i obserwatory właściwości
  3. Właściwości obliczane w strukturach
  4. Metody mutujące i semantyka Copy-on-Write
← Powrót do Swift Academy