1. ホーム
  2. スイフト

[解決済み】「このアプリケーションはバックグラウンドのスレッドからオートレイアウトエンジンを変更しています」エラーが発生する?

2022-03-27 22:05:10

質問

OS Xでswiftを使用していて、このエラーに何度も遭遇しています。

このアプリケーションはバックグラウンドのスレッドからオートレイアウトエンジンを変更しているため、エンジンの破損や奇妙なクラッシュを引き起こす可能性があります。 これは将来のリリースで例外を引き起こします。"

私の NSWindow にビューを入れ替えています。 contentView のウィンドウの このとき エラー を実行しようとすると NSApp.beginSheet を追加したとき、または subview をウィンドウに追加しました。自動サイズ調整機能を無効にし、自動レイアウトを使用しているものはありません。何かいい方法はないでしょうか?

あるときは問題なく何も起こりませんが、あるときは完全に私の UI 何も読み込まない

解決方法は?

スレッド関数の実行が完了したらすぐにUIを更新できるように、別のスレッド内に配置する必要があります。

モダンなSwift。

DispatchQueue.main.async {
    // Update UI
}

Swift 3以前の古いバージョンのSwift。

dispatch_async(dispatch_get_main_queue(){
    // code here
})

Objective-Cです。

dispatch_async(dispatch_get_main_queue(), ^{
    // code here
});