Section 20/211 menit

Ringkasan Keputusan Isolation

Ringkasan Keputusan Isolation

Keputusan Alasan
Interactor = actor bukan @MainActor Parsing JSON dan transformasi data berjalan di background — main thread tetap bebas
Worker = actor terpisah Interactor tidak bergantung pada detail networking — mudah diganti mock saat testing
Presenter = @MainActor Satu-satunya layer yang boleh menyentuh View API — menjamin semua UI update di main thread
Models = Sendable struct Harus melewati minimal 3 isolation boundary (Worker → Interactor → Presenter → View)
Protocol method Presenter = @MainActor Compiler memaksa semua caller menggunakan await — tidak ada yang bisa "lupa" thread
Task {} di ViewController, bukan Task.detached Mewarisi @MainActor isolation — tidak perlu MainActor.run {} saat kembali ke UI