[SwiftUI] @EnvironmentObjectかシングルトンパターンか
複数のviewをまたぐstateを管理するのに、@EnvironmentObjectを使用する方法か、シングルトンパターンで実装する方法かがありそうなのでどちらが良いのだろうか。
コーディングエージェントは以下のようにシングルトンパターンで実装してきた。
class StorageService: ObservableObject {
static let shared = StorageService()
...
}struct HomeView: View {
@StateObject private var storageService = StorageService.shared
...
}どうも@EnvironmentObjectの方を使えると今っぽいようなのでそちらに書き換えてみる。
*App.swiftで@StateObjectとして定義して、
@StateObject private var storageService = StorageService()同じ*App.swift内でenvironmentObjectとして登録
ZStack {
...
}
.environmentObject(storageService)子View内で@EnvironmentObjectとしてDIを行う
@EnvironmentObject private var storageService: StorageService組み合わせて利用するケースも含め、似たような議論はいくつかありそう。