SwiftUI TabView 更改页面时内存占用不断增加

dus*_*ndz 6 swiftui ios14 swiftui-tabview

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))
    }
}
Run Code Online (Sandbox Code Playgroud)

环境:Xcode 12.2 iOS 14.2

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

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

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

小智 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

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

TabViewWrapper(selection: $selection) {
    tabContent
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
Run Code Online (Sandbox Code Playgroud)