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
- Funktionsweise von defer
- Reihenfolge mehrerer defer-Blöcke
- defer zur Ressourcenbereinigung
- defer mit Fehlern und vorzeitigen Rückgaben