memory-management - SwiftUI 的 List 泄露内存
问题描述
我在玩 SwiftUI 时注意到一个问题List
,当我构建我的行视图时,我创建了一个视图模型,如下所示:
struct MyListView: View {
var body: some View {
NavigationView {
List(models) { model in
RowView(viewModel: RowViewModel(model: models))
}
.navigationTitle("Landmarks")
}
}
列表有多大并不重要,我的视图模型永远不会被释放,我不确定视图实际上被回收到了哪个扩展,但是我可以通过使用 Xcode 上的内存调试器看到,当我滚动和更多视图时构建,越来越多的视图模型被分配并保存在内存中,这就是我的行视图的样子:
struct RowView: View {
var viewModel: RowViewModel
var body: some View {
HStack {
Text(viewModel.title)
Spacer()
}
}
}
和我的视图模型:
class RowViewModel {
private let model: Model
init(model: model) {
self.model = model
}
var title: String {
model.title
}
}
我在使用前也尝试过,@ObservedObject
但这并没有什么不同。
解决方案
推荐阅读
- java - 使用 2 个端口与 spring boot 和 spring 集成
- reactjs - 为什么我们不使用 let 而不是 States?
- c++ - 在一个 QtCreator 版本中使用 cmake 构建失败,而它与另一个版本以及来自终端的 catkin_make 一起使用
- getstream-io - Getstream - 按自定义字段过滤活动
- django - `basename` 参数未指定,并且可以'\
- java - Elasticsearch:使用 Java 客户端查找给定索引的所有映射类型
- php - 如何在 composer 和 /vendor/autoload.php 之前加载文件?
- java - View、Viewgroup、onClick、getChildAt问题
- android - 如何创建一个可以在一段时间后自行卸载的应用程序
- python - 为什么我在使用 python fire 时总是打印类型信息?