【发布时间】:2020-04-28 20:52:28
【问题描述】:
我正在使用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 ")
}
}
当工作表被关闭时,模型对象永远不会取消初始化。如果我用 VStack 或 ScrollView 替换表单,则模型被取消。有解决办法吗?
【问题讨论】:
标签: ios memory-leaks swiftui