如何在主线程中同步运行多个方法



我有一个长的CoreData进程(GlobalData.shared.resetData函数(,大约需要4秒,我想显示一个加载指示器。

两个操作(核心数据处理和显示装载指示器(都必须在主队列、中运行

你知道为什么显示加载指示符总是发生在CoreData过程之后吗?

@IBAction func resetTapped(_ sender: UIButton) {
tableView.backgroundColor = .green
showLoading(loadingText: nil)         
GlobalData.shared.resetData(completion: {
self.refreshGlobalData()
})
}

我添加这一行是为了更改表的背景颜色以进行测试。核心数据处理(GlobalData.shared.resetData函数(后,背景颜色总是发生变化。

当你这样改变背景颜色时,你就是在改变"模型",但你要等到下次主线程重新绘制时才能看到结果,直到你的代码放弃对运行循环的控制(完成运行(,这才会发生。您可以尝试dispatch_async操作核心数据操作,这可能允许在开始操作之前绘制运行循环。但实际上,正如评论者所提到的,不要在主线程上做一些需要四秒钟的事情。

相关内容

  • 没有找到相关文章

最新更新