如何防止UIButton touchDown和touchUpInside内部的竞争状况?

时间:2018-12-11 22:22:56

标签: ios swift multithreading grand-central-dispatch race-condition

我有一个UIButton,其中有两个事件。 touchUpInsidetouchDown。该按钮用于录音,因此可以顺序地多次触摸。发生touchDown时,它确实准备并开始记录,而发生touchUpInside时,它完成记录。 touchDown命令在另一个线程中执行:

DispatchQueue.global(qos: .userInteractive).async {
//prepare and start voice recording
}

touchUpInside命令在主线程中执行。 问题是我有一些在两个事件中都使用过的变量(发生比赛条件)。例如,在准备touchDown事件内的记录器实例之前,发生touchUpInside事件。那么如何控制比赛条件呢?我对DispatchGroup有点了解,但是我无法与他们一起解决这种情况。感谢您的帮助。

0 个答案:

没有答案