当前位置: 首页 > 面试题库 >

收到“此应用程序正在从后台线程修改自动布局引擎”错误?

尉迟招
2023-03-14
问题内容

使用swift在我的OS X中经常遇到此错误:

“此应用程序正在从后台线程修改自动布局引擎,这可能导致引擎损坏和奇怪的崩溃。这将在以后的版本中引发异常。”

我有一个 NSWindow ,正在交换视图到contentView窗口的视图。尝试在窗口上执行操作或在窗口上添加操作时,都会收到
错误消息 。试图禁用自动调整大小的东西,并且我没有使用自动布局的东西。有什么想法吗?NSApp.beginSheet``subview

有时候很好,什么也没发生,其他时候却完全破坏了我UI,没有负载


问题答案:

需要将其放置在其他线程中,该线程允许UI在执行完线程功能后立即进行更新:

现代雨燕:

DispatchQueue.main.async {
    // Update UI
}

较早版本的Swift,低于Swift 3。

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

目标C:

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


 类似资料:
  • 问题内容: 我刚刚为iPhone和新的Xcode下载了iOS 13。我想测试适用于iOS 13的应用程序,但是当我尝试运行应用程序时,几秒钟后会出现错误。错误: 由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“从主线程访问布局引擎后,不得从后台线程对其进行修改。” ***第一掷调用堆栈:(0x191ea9c30 0x191bc40c8

  • 问题内容: 我在Qt工作,当我按下GO按钮时,我需要不断将软件包发送到网络并使用收到的信息修改界面。 问题是我在按钮中有一个,所以按钮永不结束,所以界面永不更新。我想在按钮中创建一个线程并将代码放在那里。 我的问题是如何从线程修改接口?(例如,如何从线程修改textBox? 问题答案: 关于Qt的重要一点是, 必须 仅从GUI线程(即主线程)使用Qt GUI。 这就是为什么执行此操作的正确方法是从

  • 我正在开发一个在后台计算算法的应用程序。从应用程序启动到结束。这是一个跟踪算法(现在进一步解释算法的工作原理)。 因此,需要在应用程序的所有屏幕上计算后台任务,而不管用户在应用程序上的操作、单击、wifi通信消息(已在应用程序上完成),当算法在后台运行时,需要完成所有操作。 它是异步任务吗?如果没有,还有什么?应用程序正在运行,算法正在特定屏幕上计算,我想让它成为一个后台进程,与当前应用程序屏幕无

  • 问题内容: 我对Tomcat不太熟悉,在我看来,它基本上是抽象为cgi服务器,可以在两次调用之间保存JVM -尽管我知道它可以做得多。 我正在寻找一种在Tomcat服务器启动时启动 后台 线程的方法,该方法会定期更新服务器上下文(在我的特殊情况下,这是一个侦听其他服务的心跳并更新可用性信息的线程,但是可以想象得到有多种用途)。 有标准的方法吗?上下文的启动和更新/查询? 指向相关文档和/或代码示例

  • 我可能已经阅读了所有其他与此相关的SO线程,但我找不到答案,而且在Android监视器中也没有日志跟踪。有人对此有提示吗?

  • 当应用程序在前台时不接收推送通知,但当应用程序在后台时接收我已遵循来自https://medium . com/@ ankushaggarwal/GCM-setup-for-Android-push-notifications-656 cf DD 8 adbd的FCM教程