SwiftUI - 返回时如何取消初始化 StateObject?

Kev*_*inP 11 navigation swift swiftui

我希望@StateObject在返回后尽快取消初始化,但该对象似乎保存在内存中。“Deint ViewModel”没有打印在返回导航上,它是在我再次导航到我来自的视图后第一次打印的。有没有办法释放@StateObject后退导航的内存?

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: TestView(), label: { Text("Show Test View") })
        }
    }
}

struct TestView: View {
    
    @StateObject private var viewModel = ViewModel()
    
    var body: some View {
        Text("Test View")
    }
}

final class ViewModel: ObservableObject {
    deinit {
        print("Deint ViewModel")
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 -1

我认为你应该使用@ObservedObject private var viewModel: ViewModel,然后从 TestView 外部注入新的 ViewModel 实例