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