Initializer und deinit (Klassen)
Erstellen Sie designierte und Convenience-Initializer, stellen Sie Standardwerte bereit, verwenden Sie bei Bedarf failable init und verstehen Sie Deinitializer von Klassen.
Initializer und deinit (Klassen) ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.
Überblick
Diese Lektion behandelt designierte und Convenience-Initialisierer, Standardwerte, fehlschlagende Initialisierer mit init? und deinit bei Klassen.
Grundlagen der Struct-Initialisierung
Structs erhalten einen Memberwise-Initialisierer. Geben Sie Standardwerte an, um Aufrufe zu vereinfachen.
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)Designierter Initialisierer
Ein designierter Initialisierer stellt sicher, dass alle gespeicherten Eigenschaften vor der Verwendung gesetzt sind.
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-Initialisierer
convenience-Initialisierer müssen an einen designierten Initialisierer derselben Klasse delegieren.
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)Fehlschlagender Initialisierer
Verwenden Sie init? für Eingaben, deren Validierung fehlschlagen kann. Das Ergebnis ist optional.
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")Deinitialisierer
Nur Klassen verfügen über deinit. Es wird aufgerufen, wenn die Instanz freigegeben wird (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 hereDesignierter vs. Convenience-Initialisierer
Kurzer Test: Welchen Initialisierer müssen Convenience-Initialisierer letztendlich aufrufen?
Zusammenfassung
Zusammenfassung: Verwenden Sie designierte Initialisierer, um alle Eigenschaften zu setzen, ergänzen Sie Convenience-Initialisierer für angenehmere Aufrufstellen, ziehen Sie init? für die Validierung in Betracht, und lassen Sie Klassen in deinit aufräumen.
Häufig gestellte Fragen
Ist die Lektion „Initializer und deinit (Klassen)“ kostenlos?
Ja — der vollständige Text von „Initializer und deinit (Klassen)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Initializer und deinit (Klassen)“?
Erstellen Sie designierte und Convenience-Initializer, stellen Sie Standardwerte bereit, verwenden Sie bei Bedarf failable init und verstehen Sie Deinitializer von Klassen. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.
Wie lange dauert die Lektion „Initializer und deinit (Klassen)“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Structs vs. Klassen, Properties und Initializer
- Gespeicherte und berechnete Properties, Observer
- Initializer und deinit (Klassen)