【发布时间】:2018-03-03 21:51:17
【问题描述】:
我正在尝试在后台线程中渲染一些视图,以免影响主线程。在 Xcode 9 之前,这从来都不是问题。
DispatchQueue.global(qos: .background).async {
let customView = UIView(frame: .zero)
DispatchQueue.main.async {
self.view.addSubview(customView)
}
}
UIView.init(frame:) 只能在主线程中使用
这个错误出现在第二行。
更新
Apple UIView 文档实际上在 Threading Considerations 部分中说:
对应用程序用户界面的操作必须在主线程上进行。因此,您应该始终从应用程序主线程中运行的代码调用 UIView 类的方法。 这可能不是绝对必要的唯一情况是在创建视图对象本身时,但所有其他操作都应在主线程上进行。
【问题讨论】:
-
我知道这个新规则,但我想知道您仍然可以将多少工作卸载到后台线程...
标签: ios swift xcode multithreading uikit