連続して同じ処理が走らないようにBoolを使った排他制御をすることがあると思います。そういったケースで使えるプチ便利なクラスを書きました。
class BooleanLock {
private var doing = false
func withLock(_ f: (@escaping () -> Void) -> Void) {
if doing { return }
doing = true
f(unlock)
}
private func unlock() {
doing = false
}
}
使い方
class BooleanLockTest {
...
private let fetching = BooleanLock()
...
func doFetch() {
fetching.withLock { unlock in
// do something
// ...
unlock()
}
}
}
以上