问题描述
该功能需要几秒钟才能完成,当我按下按钮时,大约有一半的时间,活动指示器会出现在屏幕上,直到该功能完成,就像它应该的那样。另一半时间,屏幕在执行该功能时会冻结,并且活动指示器从不出现。
@IBAction func buttonAction(_ sender: Any) {
activityIndicator.startAnimating()
dispatchQueue.global(qos: .default).async {
dispatchQueue.main.async {
self.function()
self.activityIndicator.stopAnimating()
}
}
}
解决方法
我认为函数不应该在主队列中执行:
@IBAction func buttonAction(_ sender: Any) {
activityIndicator.startAnimating()
DispatchQueue.global(qos: .default).async {
self.function()
DispatchQueue.main.async {
self.activityIndicator.stopAnimating()
}
}
}