3
struct ContentView: View {
    
    @State private var selectedIdx = 0
    
    var body: some View {
        TabView(selection: $selectedIdx) {
            ForEach(0..<5) { idx in
                Text("\(idx)")
            }
        }
        .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
    }
}

环境:Xcode 12.2 iOS 14.2

当我在页面之间滑动时,SwiftUI 内存中的 TabView 会不断增加。运行仪器,我没有看到任何泄漏,但分配和持久内存不断增加。

理想情况下,即使每次都重新创建页面,这 5 个页面(如上面的代码)消耗的总内存也不应该改变。

这是 SwiftUI 中的错误吗?还是我错过了什么?

4

1 回答 1

0

此代码为我修复了一个错误

struct TabViewWrapper<Content: View, Selection: Hashable>: View {
    @Binding var selection: Selection
    @ViewBuilder let content: () -> Content
    
    var body: some View {
        TabView(selection: $selection, content: content)
    }
}

替换TabView(selection:)TabViewWrapper(selection:)

TabViewWrapper(selection: $selection) {
    tabContent
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
于 2021-12-22T12:44:19.973 回答