Section 11/131 menit
Ringkasan: Decision Tree
Ringkasan: Decision Tree
Gunakan panduan ini ketika bingung memilih tool yang tepat:
swift
Apakah datamu mutable?
├── TIDAK (let, immutable) → Tidak butuh isolation. Sendable otomatis.
└── YA (var, bisa berubah)
│
Apakah data adalah value type (struct/enum)?
├── YA → Value semantics memberikan copy otomatis.
│ Tidak butuh actor. Sendable otomatis jika semua property Sendable.
└── TIDAK (class, reference type)
│
Apakah hanya diakses dari main thread (UI)?
├── YA → Gunakan @MainActor class
└── TIDAK (diakses dari multiple contexts)
│
Apakah satu instance dengan state terlindungi?
├── YA → Gunakan actor
└── Apakah banyak class berbagi satu domain isolation?
├── YA → Gunakan @globalActor
└── Pertimbangkan refactor ke struct atau actor
swift
Apakah kamu mengirim nilai melewati isolation boundary?
├── Value type (struct/enum) dengan semua Sendable properties → OK otomatis
├── Actor reference → OK, actor selalu Sendable
├── Class dengan hanya immutable (let) properties → final class: Sendable
├── Class dengan mutable (var) properties → Jadikan actor atau struct
└── Non-Sendable yang tidak akan diakses lagi setelah dikirim → sending keyword