我了解this issue,UIViewControllerRepresentable
可能会导致内存泄漏。即使应该在过去的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还是我遗漏了某些东西?
更新:
iPhone 11(iOS 13.7)模拟器未显示泄漏