Swift Academy · leksjon

Initializers og deinit (klasser)

Opprett designated- og convenience-initializers, angi standardverdier, bruk failable init ved behov, og forstå deinitializers for klasser.

Leksjon 3 av 38 trinn

Initializers og deinit (klasser) er en gratis leksjon i Swift Academy på CoddyKit. Dette er leksjon 3 av 3. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Swift Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Swift Academy inneholder totalt 3 leksjoner.

Oversikt

Denne leksjonen dekker designated- og convenience-initialiserere, standardverdier, failable init og deinit i klasser.

Grunnleggende initialisering av struct

Structer får en memberwise initializer. Oppgi standardverdier for å forenkle kall.

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)

Designated-initialiserer

En designated-initialiserer sørger for at alle lagrede egenskaper er satt før bruk.

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)

Convenience-initialiserer

convenience-initialiserere må delegere til en designated-initialiserer i samme klasse.

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)

Failable-initialiserer

Bruk init? for inndata som kan bli avvist ved validering. Resultatet er valgfritt.

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")

Deinitialiserer

Bare klasser har deinit, som kalles når instansen frigjøres (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 kontra convenience

Rask sjekk: Hvilken initialiserer må convenience-initialiserere til slutt kalle?

Oppsummering

Oppsummering: Bruk designated-initialiserere for å sette alle egenskaper; legg til convenience-initialiserere for å tilby enklere kall; vurder init? for validering; klasser rydder opp i deinit.

Gratis å komme i gang

Lær deg Swift med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
122
Leksjoner
409

Ofte stilte spørsmål

Er leksjonen «Initializers og deinit (klasser)» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Swift Academy, inkludert «Initializers og deinit (klasser)», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Swift Academy inneholder totalt 3 leksjoner.

Hva lærer jeg i «Initializers og deinit (klasser)»?

Opprett designated- og convenience-initializers, angi standardverdier, bruk failable init ved behov, og forstå deinitializers for klasser. Du øver på Swift Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Swift Academy?

Ingen tidligere erfaring er nødvendig. Swift Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 3.

Hvor lang tid tar leksjonen «Initializers og deinit (klasser)»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Swift Academy-leksjonen?

Ja. Alle Swift Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Structs kontra classes, properties og inits
  2. Lagrede kontra beregnede properties og observers
  3. Initializers og deinit (klasser)
← Tilbake til Swift Academy