0Pricing
Swift Academy · Lektion

defer zur Ressourcenbereinigung

Schließen Sie Dateien und geben Sie Ressourcen zuverlässig frei.

defer zur Ressourcenbereinigung ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. 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 4 Lektionen.

Das Problem beim Aufräumen

Ressourcen wie Dateien, Sperren oder Verbindungen müssen freigegeben werden. Werden sie auf einem Pfad nicht freigegeben, entstehen Leaks.

func work() {
    print("acquire resource")
    print("use resource")
    print("release resource")
}
work()

defer garantiert die Freigabe

Wenn Sie die Freigabe in ein defer setzen, wird garantiert, dass sie unabhängig davon ausgeführt wird, wie die Funktion endet.

func work() {
    print("acquire resource")
    defer { print("release resource") }
    print("use resource")
}
work()

Einen Dateihandle simulieren

Hier modelliert eine einfache Struktur das Öffnen und Schließen. Das defer stellt sicher, dass close immer aufgerufen wird.

struct File {
    let name: String
    func close() { print("closed", name) }
}
func readFile() {
    let f = File(name: "data.txt")
    defer { f.close() }
    print("reading", f.name)
}
readFile()

Sperre erwerben und freigeben

Modellieren Sie eine Sperre: Erwerben Sie sie und stellen Sie anschließend die Freigabe mit defer zurück, damit der kritische Abschnitt immer entsperrt wird.

func critical() {
    print("lock acquired")
    defer { print("lock released") }
    print("critical section work")
}
critical()

Aufräumen direkt neben dem Setup

Wenn das Aufräumen direkt nach dem Setup steht, ist die Zuordnung offensichtlich und kann nur schwer vergessen werden.

func session() {
    print("connect")
    defer { print("disconnect") }
    print("send request")
    print("receive response")
}
session()

Mehrere Ressourcen

Bei mehreren Ressourcen deklarieren Sie jedes Aufräumen direkt nach dem zugehörigen Setup. Die LIFO-Reihenfolge schließt sie korrekt.

func transaction() {
    print("open connection")
    defer { print("close connection") }
    print("begin transaction")
    defer { print("commit transaction") }
    print("run query")
}
transaction()

Zähler zurücksetzen

Ein defer kann den Zustand wiederherstellen, etwa indem es beim Ende eines Gültigkeitsbereichs ein Flag zurücksetzt.

func tracked() {
    var active = true
    defer { active = false; print("active reset to", active) }
    print("active is", active)
}
tracked()

Duplizierung vermeiden

Ohne defer müssten Sie das Aufräumen auf jedem Beendigungspfad wiederholen. Mit defer schreiben Sie es nur einmal.

func validate(_ ok: Bool) {
    print("start")
    defer { print("cleanup done once") }
    if !ok {
        print("invalid")
        return
    }
    print("valid")
}
validate(false)

Aufräumen mit berechnetem Wert

Ein defer kann eine abschließende Messung protokollieren, etwa wie viele Elemente verarbeitet wurden.

func batch() {
    var processed = 0
    defer { print("processed", processed, "items") }
    for _ in 1...3 { processed += 1 }
}
batch()

Temporären Zustand wiederherstellen

Verwenden Sie defer, um eine Einstellung vorübergehend zu ändern und anschließend zuverlässig wiederherzustellen.

func withVerbose() {
    var verbose = false
    verbose = true
    defer { verbose = false; print("verbose restored:", verbose) }
    print("verbose during work:", verbose)
}
withVerbose()

Bewährte Vorgehensweise

Immer wenn Sie etwas erwerben, das freigegeben werden muss, registrieren Sie die Freigabe in der unmittelbar folgenden Zeile mit defer.

func handle() {
    print("acquire")
    defer { print("release") }
    print("process")
}
handle()

Kurztest

Testen Sie defer zum Aufräumen.

Zusammenfassung

Registrieren Sie die Freigabe einer Ressource direkt nach dem Erwerb mit defer. Das Aufräumen wird auf jedem Beendigungspfad garantiert ausgeführt, hält Teardown und Setup zusammen und vermeidet dupliziertes Aufräumen auf verschiedenen return-Pfaden.

func work() {
    print("acquire")
    defer { print("release") }
    print("use")
}
work()

Häufig gestellte Fragen

Ist die Lektion „defer zur Ressourcenbereinigung“ kostenlos?

Ja — der vollständige Text von „defer zur Ressourcenbereinigung“ 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 4 Lektionen.

Was lerne ich in „defer zur Ressourcenbereinigung“?

Schließen Sie Dateien und geben Sie Ressourcen zuverlässig frei. 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 4.

Wie lange dauert die Lektion „defer zur Ressourcenbereinigung“?

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

  1. Funktionsweise von defer
  2. Reihenfolge mehrerer defer-Blöcke
  3. defer zur Ressourcenbereinigung
  4. defer mit Fehlern und vorzeitigen Rückgaben
← Zurück zu Swift Academy