Section 13/201 menit
13. Improved Actor Isolation Inference
13. Improved Actor Isolation Inference
Teori: Lebih Sedikit Annotation Manual
Swift 6.1 meningkatkan kemampuan compiler untuk meng-infer isolation secara otomatis dalam lebih banyak kasus — mengurangi kebutuhan annotation eksplisit.
Improvement utama:
swift
// Swift 6.0: perlu annotation eksplisit di banyak tempat
@MainActor
class ViewController: UIViewController {
@MainActor // perlu explicit di Swift 6.0
func handleTap() { }
@MainActor // perlu explicit di Swift 6.0
var displayText: String = ""
}
// Swift 6.1: isolation diinfer dari context class
@MainActor
class ViewController: UIViewController {
// Tidak perlu annotation ulang — sudah diinfer dari class
func handleTap() { } // diinfer @MainActor ✓
var displayText: String = "" // diinfer @MainActor ✓
}
Protocol conformance inference:
swift
@MainActor
protocol MainActorProtocol {
func update()
}
// Swift 6.1: conformance meng-infer isolation ke semua methods
class MyClass: MainActorProtocol {
func update() {
// Diinfer @MainActor karena protocol isolation
// Tidak perlu @MainActor annotation eksplisit di method ini
}
}
Dampak Praktis
swift
// Sebelum Swift 6.1: banyak annotation repetitif
@MainActor class HomeViewController: UIViewController {
@MainActor private var viewModel: HomeViewModel
@MainActor override func viewDidLoad() { super.viewDidLoad() }
@MainActor override func viewWillAppear(_ animated: Bool) { }
@MainActor func updateUI() { }
@MainActor func handleError(_ error: Error) { }
}
// Swift 6.1: annotation di class sudah cukup
@MainActor class HomeViewController: UIViewController {
private var viewModel: HomeViewModel // diinfer @MainActor
override func viewDidLoad() { // diinfer @MainActor
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) { } // diinfer
func updateUI() { } // diinfer @MainActor
func handleError(_ error: Error) { } // diinfer @MainActor
}