问题描述
最近,我将当前的代码库从Swift 4.2(Xcode-10.3)迁移到了Swift 5(Xcode-11.5)。
在测试时,我在 tableView 数据源上放置了一个断点,并发现当前(Xcode-11.5)在该断点上显示了后台线程。由于无法在后台线程上运行UIKit,这对我来说是个警报。查看附件
除非另有说明,否则仅从应用程序的主线程或主调度队列中使用UIKit类。此限制尤其适用于从UIResponder派生的类,或涉及以任何方式操纵应用程序用户界面的类。
解决方法
您必须添加一些更多信息,例如在何处以及如何初始化视图控制器和表视图。
您是否通过编程方式设置了表格视图的delegate
和dataSource
?如果是这样,请在DispatchQueue.main.async{}
块内尝试。
如果不是这种情况,请使用DispatchQueue的cellForRow
属性检查它是否是isMainThread
中的主线程。并检查您在哪里初始化tableView。
在其他情况下,可以在后台线程内调用整个View Controller。还要检查。