Swift Academy · Pelajaran

Deinisialisasi dan Siklus Hidup Memori

Menggunakan deinit untuk membersihkan sumber daya sebelum objek dilepas dari memori.

Pelajaran 4 dari 412 langkah

Deinisialisasi dan Siklus Hidup Memori adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Selamat Datang

Kelas Swift dapat mendefinisikan `deinit` yang berjalan tepat sebelum instance dibebaskan dari memori. Memahami seluruh siklus hidup objek — init → penggunaan → deinit — adalah kunci pengelolaan sumber daya.

Apa Itu deinit

```swift class FileHandle { let path: String init(path: String) { self.path = path; print("Opened \(path)") } deinit { print("Closed \(path)") } } do { let f = FileHandle(path: "/tmp/log.txt") } // deinit called here when f goes out of scope ```

Aturan Sintaks deinit

• Hanya untuk kelas — struct dan enum tidak memiliki `deinit` • Tidak memiliki parameter atau nilai kembalian • Tanpa tanda kurung: `deinit { }`, bukan `deinit() { }` • Dipanggil otomatis oleh ARC — jangan pernah memanggilnya sendiri • `deinit` kelas induk dipanggil otomatis setelah `deinit` subkelas

Kasus Penggunaan untuk Pembersihan

Penggunaan umum `deinit`: • Menutup koneksi jaringan • Menghapus pengamat notifikasi: `NotificationCenter.default.removeObserver(self)` • Membatalkan pengatur waktu • Menutup penangan berkas atau koneksi basis data

Jumlah Retensi dan Siklus Hidup

ARC melacak jumlah referensi kuat yang menunjuk ke sebuah objek: ```swift var a: Dog? = Dog() // retain count = 1 var b = a // retain count = 2 a = nil // retain count = 1 b = nil // retain count = 0 → deinit called ```

Rangkaian deinit Subkelas

```swift class Base { deinit { print("Base deinit") } } class Child: Base { deinit { print("Child deinit") } // super.deinit called automatically after } var c: Child? = Child() c = nil // prints: Child deinit, then Base deinit ```

Mencegah Retensi dengan Referensi Lemah

```swift class Owner { var pet: Dog? deinit { print("Owner gone") } } class Dog { weak var owner: Owner? // weak = no strong retain deinit { print("Dog gone") } } ``` Ketika `owner` diatur menjadi nil, `Owner` dapat dibebaskan dari memori meskipun `Dog` menyimpan referensi.

Siklus Retensi Mencegah deinit

```swift class A { var b: B? } class B { var a: A? } var a: A? = A() var b: B? = B() a?.b = b b?.a = a a = nil b = nil // deinit never called — retain cycle! ```

Pola Pembatalan Pengatur Waktu

```swift class PollingService { var timer: Timer? func start() { timer = Timer.scheduledTimer(...) } deinit { timer?.invalidate() timer = nil print("Timer stopped") } } ```

Deteksi Kebocoran dengan Instruments

Jika `deinit` tidak pernah dipanggil, kemungkinan besar terdapat siklus retensi. Gunakan templat Leaks di Xcode Instruments → untuk mendeteksi objek yang telah dialokasikan tetapi tidak pernah dibebaskan dari memori.

Pemeriksaan Singkat

Tipe apa saja yang dapat mendefinisikan `deinit`?

Ringkasan

Hal-hal penting: • `deinit { }` — membersihkan sumber daya sebelum objek dibebaskan dari memori • Hanya untuk kelas; `deinit` kelas induk dipanggil otomatis setelah milik subkelas • ARC menentukan kapan `deinit` dijalankan (jumlah retensi turun menjadi 0) • Siklus retensi mencegah `deinit` — atasi dengan `weak`/`unowned` • Gunakan Leaks di Instruments untuk menemukan objek yang `deinit`-nya tidak pernah dijalankan Kursus selesai! Berikutnya: pola enum dan mesin status.
Gratis untuk memulai

Belajar Swift dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
122
Pelajaran
409

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Deinisialisasi dan Siklus Hidup Memori” gratis?

Ya — teks lengkap “Deinisialisasi dan Siklus Hidup Memori” 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 “Deinisialisasi dan Siklus Hidup Memori”?

Menggunakan deinit untuk membersihkan sumber daya sebelum objek dilepas dari memori. 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 4 dari 4.

Berapa lama pelajaran “Deinisialisasi dan Siklus Hidup Memori” 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. Pewarisan Class dan Kata Kunci super
  2. override, final, dan Mencegah Subclass
  3. Pengecoran Tipe: is, as?, as! dan as
  4. Deinisialisasi dan Siklus Hidup Memori
← Kembali ke Swift Academy