在NavigationView中,UIViewControllerRepresentable导致内存泄漏

时间:2020-09-07 11:42:36

标签: ios swift xcode memory-leaks swiftui

我了解this issueUIViewControllerRepresentable可能会导致内存泄漏。即使应该在过去的Xcode版本中修复该问题,我也只能将其嵌入NavigationView中来解决。我在实体iPhone 11 iOS 13.7上使用Xcode版本11.7(11E801a)

这里有个例子:

内存泄漏

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {   // Memory leak
            ZStack {
                Text("Hello, World!")
                ViewControllerContainer() // Memory leak
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


struct ViewControllerContainer: UIViewControllerRepresentable {
    
    func makeUIViewController(context: Context) -> UIViewController {
        return UIViewController()
    }
    
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
        
    }
}

没有内存泄漏

import SwiftUI

struct ContentView: View {
    var body: some View {
        ZStack {
            Text("Hello, World!")
            ViewControllerContainer() // No memory leak
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


struct ViewControllerContainer: UIViewControllerRepresentable {
    
    func makeUIViewController(context: Context) -> UIViewController {
        return UIViewController()
    }
    
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
        
    }
}

是与xcode / swiftui相关的bug还是我遗漏了某些东西?

编辑: 仪器/泄漏的屏幕截图 enter image description here

更新

iPhone 11(iOS 13.7)模拟器未显示泄漏

0 个答案:

没有答案