我在dispatchQueue.global().async任务中运行一个无限循环来振动我的手机,这样我的用户界面就不会冻结,但问题是我一直无法停止它。下面是我的代码
var queue: DispatchWorkItem?
queue = DispatchWorkItem {
while (self.l > 1)
{
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
}
}
DispatchQueue.global().async(execute: queue!)
下面是当用户离开屏幕时我试图阻止它的代码
override func viewWillDisappear(_ animated: Bool) {
queue?.cancel()
l=0
DispatchQueue.global().async {
self.queue?.cancel()
}
print("view will disapear")
}
尝试了几乎所有的方法,但仍然未能停止全局调度任务。
PS:我是iOS开发的新手:)
最佳答案
问题已经解决,实际上不应该首先使用dispatch global async。尝试过用定时器来完成它,它工作了,每秒钟都会震动,并且不会冻结用户界面,在调用timer.invalidate()之后也很容易停止。谢谢你们的帮助:)
关于ios - swift 停止DispatchQueue.global()。async任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54982624/