SwiftUIの基本を身につけたい方はこちら

【Xcode/Swift】@mainでの紫のエラー:This method should not be called on the main thread as it may lead to UI unresponsiveness.

エラー内容

SwiftUIで開発していると、プロジェクト名App.swiftに、以下のような紫のエラーが表示されてしまいます。

This method should not be called on the main thread as it may lead to UI unresponsiveness.

原因

結論から言うとXcode14からのバグです。

なので、無視してXcodeのアップデートを待ちましょう。としか言えません。。

こちらでAppleの開発者も認識してるっぽいので、Xcode14.xで解決されるのではないかと思います。

紫のエラーは、アプリケーションのパフォーマンスに影響を与える可能性があるよと言うことなので、ビルドは問題なくできるかと思います。

ちなみに、以下のような感じで、メインスレッドでWebViewを使ったり、するとこのエラーが発生します。

import SwiftUI
import WebKit

struct ContentView: View {
    var body: some View {
        WebView(url: URL(string: "https://ios-docs.dev")!)
    }
}

struct WebView: UIViewRepresentable {
    var url: URL

    func makeUIView(context: Context) -> WKWebView {
        return WKWebView()
    }

    func updateUIView(_ webView: WKWebView, context: Context) {
        let request = URLRequest(url: url)
        webView.load(request)
    }
}