我正在开发简单的待办事项应用程序SwiftUI。在我的测试中,我注意到我的视图模型从不调用 deinit 并导致内存使用量线性增加。
我使用以下代码重现了相同的行为:
struct ContentView: View {
@State private var isPresented = false
var body: some View {
Button("open") {
self.isPresented = true
}
.sheet(isPresented: $isPresented) {
SheetView()
}
}
}
struct SheetView: View {
@ObservedObject var model: ViewModel
init() {
model = ViewModel()
}
var body: some View {
Form {
Toggle("Toggle Me", isOn: $model.isOn)
}
}
}
class ViewModel: ObservableObject {
@Published var isOn = false
deinit {
print("ViewModel deinit ")
}
}
Run Code Online (Sandbox Code Playgroud)
当工作表被解除时,模型对象永远不会取消。如果我用 VStack …