Swift Academy · Lektion

Initializers och deinit (klasser)

Skapa designated och convenience initializers, ange standardvärden, använd failable init vid behov och förstå deinitializers för klasser.

Lektion 3 av 38 steg

Initializers och deinit (klasser) är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 3 av 3. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 3 lektioner.

Översikt

Den här lektionen behandlar designated- och convenience-initierare, standardvärden, failable init och klassers deinit.

Grunderna i struct-initiering

Strukturer får en medlemsvis initierare. Ange standardvärden för att förenkla anropen.

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-initiering

En designated-initierare säkerställer att alla lagrade egenskaper har tilldelats värden innan de används.

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-initiering

convenience-initierare måste delegera till en designated-initierare i samma klass.

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)

Initiering som kan misslyckas

Använd init? för indata som kan underkännas vid validering. Resultatet är ett optional-värde.

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

Deinitierare

Det är bara klasser som har deinit, som anropas när instansen avallokeras (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

Snabb kontroll: Vilken initierare måste convenience-initierare till slut anropa?

Sammanfattning

Sammanfattning: Använd designated-initierare för att ange värden för alla egenskaper, lägg till convenience-initierare för smidigare anrop, överväg init? för validering och låt klasser städa upp i deinit.

Gratis att börja

Lär dig Swift med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
122
Lektioner
409

Vanliga frågor

Är lektionen ”Initializers och deinit (klasser)” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Initializers och deinit (klasser)”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 3 lektioner.

Vad lär jag mig i ”Initializers och deinit (klasser)”?

Skapa designated och convenience initializers, ange standardvärden, använd failable init vid behov och förstå deinitializers för klasser. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Swift Academy?

Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 3.

Hur lång tid tar lektionen ”Initializers och deinit (klasser)”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Swift Academy-lektionen?

Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Structs jämfört med klasser, properties och init
  2. Lagrade och beräknade properties samt observers
  3. Initializers och deinit (klasser)
← Tillbaka till Swift Academy