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.
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 hereDesignated 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.
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
- Structs jämfört med klasser, properties och init
- Lagrade och beräknade properties samt observers
- Initializers och deinit (klasser)