SwiftUI-WKWebView的iOS13UIViewRepresentable获取线程1:EXC_BREAKPOINT崩溃

我正在尝试将 WKWebView 移植到 SwiftUI。这是我的代码:

import SwiftUI
import WebKit

struct ContentView: View {
    var body: some View {
        WebViewWrapper()
    }
}

/**
 WKWebView ported over to SwiftUI with `UIViewRepresentable`.
 */
final class WebViewWrapper: UIViewRepresentable {
    
    /// `UIViewRepresentable` required function #1.
    func makeUIView(context: Context) -> WKWebView  {
        print("make")
        let webView = WKWebView() /// EXC_BREAKPOINT error here
        return webView
    }
      
    /// `UIViewRepresentable` required function #2
    func updateUIView(_ uiView: WKWebView, context: Context) {
    }
}

就是这样。我创建了一个新的 SwiftUI 项目并将其粘贴进去。但是,我收到此错误:

线程 1:EXC_BREAKPOINT(代码=EXC_I386_BPT,子代码=0x0)

...在控制台中没有打印任何内容。这发生在 iOS 13.0 和 iOS 13.1 上。

但是,在 iOS 14.2 上,它运行良好。崩溃似乎也只发生在WKWebView. 例如,如果我将其替换为UITextView,则它可以毫无问题地运行。

import SwiftUI
import WebKit

struct ContentView: View {
    var body: some View {
        TextViewWrapper()
    }
}

/**
 UITextView ported over to SwiftUI with `UIViewRepresentable`.
 */
final class TextViewWrapper: UIViewRepresentable {
    
    /// `UIViewRepresentable` required function #1.
    func makeUIView(context: Context) -> UITextView  {
        print("make")
        let textView = UITextView() /// no error, works fine
        return textView
    }
      
    /// `UIViewRepresentable` required function #2
    func updateUIView(_ uiView: UITextView, context: Context) {
    }
}

我在 M1 Mac 上运行 Big Sur 11.0.1,但我认为这不成问题。我的 Xcode 版本是 12.2 (12B45b)。

编辑:Big Sur / M1 可能是问题所在。

我刚刚在我的 Intel Mac Catalina 10.15.5 上运行了相同版本的 Xcode,它运行良好。

回答

问题是由于在 M1 Mac 上运行和使用 14 之前的 iOS 版本的组合。Apple 知道该问题。


以上是SwiftUI-WKWebView的iOS13UIViewRepresentable获取线程1:EXC_BREAKPOINT崩溃的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>