gpt4 book ai didi

ios - 表单和列表的 SwiftUI 内存泄漏

转载 作者:行者123 更新时间:2023-12-01 16:04:14 25 4
gpt4 key购买 nike

我正在使用 SwiftUI 开发简单的待办事项应用程序。在我的测试过程中,我注意到我的 View 模型从不调用 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 替换表单,则模型被定义。有没有办法解决这个问题?

最佳答案

这是一个错误。唯一对我有用的解决方法是使用 ScrollView。不过,ScrollView 也有自己的动画错误。

编辑

问题似乎已在 iOS 13.3.1 中得到解决

关于ios - 表单和列表的 SwiftUI 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59694655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com