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.
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 hereDesignated 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.
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
- Structs a Classes, właściwości i inicjalizatory
- Właściwości przechowywane i obliczane, obserwatory
- Inicjalizatory i deinit (klasy)