0Pricing
Swift Academy · Pelajaran

defer untuk Pembersihan Sumber Daya

Tutup berkas dan lepaskan sumber daya dengan andal.

defer untuk Pembersihan Sumber Daya adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Masalah Pembersihan

resources seperti File, kunci, atau koneksi harus dilepaskan. Lupa melepaskannya pada jalur tertentu menyebabkan kebocoran.

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

defer Menjamin Pelepasan

Menempatkan pelepasan di dalam defer menjamin bahwa pelepasan tersebut berjalan, apa pun cara fungsi berakhir.

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

Mensimulasikan File handle

Di sini, struktur sederhana memodelkan operasi buka/tutup. defer memastikan close selalu dipanggil.

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

Akuisisi/Pelepasan Kunci

Modelkan sebuah kunci: lakukan akuisisi, lalu tunda pelepasannya agar bagian critical selalu dibuka kembali.

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

Pembersihan di Samping Penyiapan

Menjaga pembersihan tepat setelah penyiapan membuat pasangannya jelas dan sulit dilupakan.

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

Beberapa resources

Dengan beberapa resources, deklarasikan setiap pembersihan tepat setelah penyiapannya; urutan LIFO menutup semuanya dengan benar.

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

Reset Penghitung

Defer dapat memulihkan state, misalnya dengan mereset penanda saat ruang lingkup berakhir.

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

Menghindari Pengulangan

Tanpa defer, Anda harus mengulangi pembersihan pada setiap jalur keluar. defer menuliskannya satu kali.

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

Pembersihan dengan Nilai Hasil Perhitungan

Defer dapat mencatat log pengukuran akhir, misalnya jumlah item yang telah diproses.

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

Pemulihan State Sementara

Gunakan defer untuk mengubah sementara suatu pengaturan, lalu memulihkannya dengan andal.

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

Praktik Terbaik

Setiap kali Anda memperoleh sesuatu yang harus dilepaskan, daftarkan pelepasannya dengan defer pada baris berikutnya.

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

Pemeriksaan Singkat

Uji defer untuk pembersihan.

Ringkasan

Daftarkan pelepasan resources dengan defer tepat setelah akuisisi. Pembersihan dijamin berjalan pada setiap jalur keluar, menjaga pembersihan tetap berdekatan dengan penyiapan, dan menghindari pengulangan pembersihan di berbagai jalur pengembalian.

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

Pertanyaan yang Sering Diajukan

Apakah pelajaran “defer untuk Pembersihan Sumber Daya” gratis?

Ya — teks lengkap “defer untuk Pembersihan Sumber Daya” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “defer untuk Pembersihan Sumber Daya”?

Tutup berkas dan lepaskan sumber daya dengan andal. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “defer untuk Pembersihan Sumber Daya” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Cara Kerja defer
  2. Urutan Beberapa Blok defer
  3. defer untuk Pembersihan Sumber Daya
  4. defer dengan Kesalahan dan Pengembalian Awal
← Kembali ke Swift Academy