0Pricing
Swift Academy · Pelajaran

Siklus Retain: Penyebab dan Deteksi

Mengidentifikasi siklus retain antara objek dan closure dengan Instruments.

Siklus Retain: Penyebab dan Deteksi adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 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

Siklus referensi terjadi ketika dua objek atau lebih menyimpan referensi kuat satu sama lain, sehingga ARC tidak pernah mencapai jumlah nol—dan menyebabkan kebocoran memori.

Siklus Sederhana Dua Objek

```swift class Owner { var pet: Pet? } class Pet { var owner: Owner? } var o: Owner? = Owner() var p: Pet? = Pet() o?.pet = p // Owner → Pet (strong) p?.owner = o // Pet → Owner (strong) o = nil; p = nil // Neither deinit called — cycle! ```

Siklus Induk-Anak

```swift class Node { var children: [Node] = [] var parent: Node? // strong → cycle with parent } let root = Node() let child = Node() root.children.append(child) child.parent = root // cycle ```

Siklus Penangkapan Closure

```swift class ViewController { var onComplete: (() -> Void)? func setup() { onComplete = { // closure strongly captures self self.doWork() // ← cycle! } } } ```

Siklus Pola Delegasi

```swift protocol TaskDelegate: AnyObject { func didFinish() } class Task { var delegate: TaskDelegate? // if strong → potential cycle } class Manager: TaskDelegate { var task = Task() init() { task.delegate = self } // Manager → Task → Manager } ```

Mendeteksi dengan Instruments

Gunakan Xcode Instruments → Leaks: 1. Jalankan aplikasi di Instruments 2. Klik instrumen Leaks 3. Tanda merah menunjukkan objek yang bocor 4. Telusuri lebih dalam untuk melihat graf referensi Atau, tetapkan `deinit { print(...) }` dan periksa apakah kode tersebut dijalankan.

Mendeteksi dengan Graf Memori Xcode

Di debugger Xcode: Debug > Memory Graph Debugger. Klik objek yang bocor untuk melihat rantai referensinya—siklus akan terlihat sebagai putaran tertutup dalam graf.

Pola Siklus yang Umum

• Delegasi menyimpan delegasi lain sebagai referensi kuat • Closure menangkap `self` secara kuat • Referensi kuat dua arah antara induk dan anak • Pengamat NotificationCenter menyimpan closure yang menangkap dirinya sendiri • Target Timer adalah `self` (kuat)

Siklus Referensi Kuat Timer

```swift class Poller { var timer: Timer? func start() { timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in self?.poll() // weak self breaks cycle } } deinit { timer?.invalidate() } } ```

Siklus NotificationCenter

```swift class Listener { var token: NSObjectProtocol? init() { token = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive, object: nil, queue: .main) { [weak self] _ in self?.refresh() } } deinit { NotificationCenter.default.removeObserver(token!) } } ```

Pemeriksaan Singkat

Apa yang dimaksud dengan siklus retensi dalam ARC?

Ringkasan

Pokok penting: • Siklus retensi: referensi kuat timbal balik → tidak ada yang didealokasi • Umum pada: delegasi, penutupan, tautan dua arah induk-anak • Deteksi dengan Instrumen Kebocoran atau Penyahbug Graf Memori Xcode • Perbaiki dengan referensi `weak` atau `unowned` • Pengatur waktu dan NotificationCenter juga menyebabkan siklus — putus dengan `[weak self]` Berikutnya: referensi `weak` dan `unowned`.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Siklus Retain: Penyebab dan Deteksi” gratis?

Ya — teks lengkap “Siklus Retain: Penyebab dan Deteksi” 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 “Siklus Retain: Penyebab dan Deteksi”?

Mengidentifikasi siklus retain antara objek dan closure dengan Instruments. 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 2 dari 4.

Berapa lama pelajaran “Siklus Retain: Penyebab dan Deteksi” 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 ARC Menghitung Referensi
  2. Siklus Retain: Penyebab dan Deteksi
  3. Referensi weak dan unowned
  4. Daftar Capture Closure dan [weak self]
← Kembali ke Swift Academy