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を使ったり、するとこのエラーが発生します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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)
}
}
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) } }
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)
    }
}

評価