Swift Academy · Lekcja

Inicjalizatory i deinit (klasy)

Twórzcie inicjalizatory designated i convenience, podawajcie wartości domyślne, używajcie failable init w razie potrzeby i poznajcie deinicjalizatory klas.

Lekcja 3 z 38 kroki

Inicjalizatory i deinit (klasy) to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 3. 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 3 lekcji w sumie.

Omówienie

Ta lekcja obejmuje inicjalizatory designated i convenience, wartości domyślne, failable init oraz klasowy deinit.

Podstawy inicjalizacji struktur

Struktury otrzymują inicjalizator składowy. Należy podać wartości domyślne, aby uprościć wywołania.

struct User {
    var name: String = "Guest"   // default value
    var age: Int

    // memberwise init is synthesized: User(name:age:)
}
let u1 = User(name: "Ada", age: 20)
let u2 = User(age: 0)            // uses default name
print(u1.name, u2.name)

Inicjalizator designated

Inicjalizator designated gwarantuje, że wszystkie właściwości przechowywane zostaną ustawione przed użyciem.

class Person {
    let name: String
    let id: Int

    // Designated initializer: fully initializes stored properties
    init(name: String, id: Int) {
        self.name = name
        self.id = id
    }
}
let p = Person(name: "Bob", id: 1)
print(p.name, p.id)

Inicjalizator convenience

Inicjalizatory convenience muszą delegować wywołanie do inicjalizatora designated w tej samej klasie.

class Rectangle {
    var width: Double
    var height: Double

    // Designated
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }

    // Convenience must call a designated initializer
    convenience init(square side: Double) {
        self.init(width: side, height: side)
    }
}
print(Rectangle(square: 3).width)

Inicjalizator failable

Należy użyć init? w przypadku danych wejściowych, które mogą nie przejść walidacji. Wynik jest opcjonalny.

struct Email {
    let value: String
    init?(_ raw: String) {
        guard raw.contains("@") else { return nil } // fail to initialize
        self.value = raw
    }
}
print(Email("a@b.com")?.value ?? "invalid")
print(Email("not email")?.value ?? "invalid")

Destruktor

Tylko klasy mają deinit, wywoływany podczas zwalniania instancji (ARC).

class TempResource {
    let id: Int
    init(id: Int) { self.id = id }
    deinit { print("Releasing resource", id) }
}
do {
    let r = TempResource(id: 42)
    print("Using", r.id)
} // r goes out of scope; ARC may call deinit here

Designated a convenience

Szybkie sprawdzenie: Który inicjalizator muszą ostatecznie wywoływać inicjalizatory convenience?

Podsumowanie

Podsumowanie: inicjalizatory designated służą do ustawiania wszystkich właściwości; inicjalizatory convenience pozwalają udostępniać wygodniejsze sposoby wywołania; podczas walidacji warto rozważyć init?; klasy wykonują porządki w deinit.

Bezpłatny start

Ucz się Swift dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
122
Lekcje
409

Często zadawane pytania

Czy lekcja „Inicjalizatory i deinit (klasy)” jest bezpłatna?

Tak — pełny tekst „Inicjalizatory i deinit (klasy)” 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 3 lekcji w sumie.

Co nauczysz się w „Inicjalizatory i deinit (klasy)”?

Twórzcie inicjalizatory designated i convenience, podawajcie wartości domyślne, używajcie failable init w razie potrzeby i poznajcie deinicjalizatory klas. Ć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 3 z 3.

Ile czasu zajmuje lekcja „Inicjalizatory i deinit (klasy)”?

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. Structs a Classes, właściwości i inicjalizatory
  2. Właściwości przechowywane i obliczane, obserwatory
  3. Inicjalizatory i deinit (klasy)
← Powrót do Swift Academy