同时执行多个后台操作以及警报对话框时,我面临以下问题。
从主线程访问引擎后,此应用程序正在从后台线程修改自动布局引擎。这会导致引擎损坏和奇怪的崩溃。
这是在Xcode 11和Swift IOS 5中发生的,我发现此问题已得到解决,但是由于Xcode 11发生了变化,因此先前的建议不可行,因为所需的功能在Xcode 11中不可用。
答案 0 :(得分:0)
此警告是因为您尝试在后台线程上对UIKit
中的类进行操作(通常意味着它以UI-
开头)。这可以是尝试推送或呈现,设置某些值(例如在图像视图上显示图像),调整或进行约束(有时VC或视图的初始化会导致约束,因此甚至初始化它们),访问诸如{ {1}},等等。
如果您打开主线程运行时检查器,Xcode应该准确告诉您发生了什么。默认情况下应启用此功能,否则请启用:
单击Xcode左上方运行按钮旁边的方案名称。然后点击“编辑方案”,然后在“诊断”下确保已切换“主线程检查器”。
现在再次运行,Xcode会准确告诉您问题出在哪里。
所有您需要做的就是包装到主线程中的分派:
UIApplication.shared.applicationState
根据您的判断,将整个函数包装起来或在调用链的更远的调用位置包装是有意义的。