Не могу до конца разобраться с семафорами. Есть функция обновления данных (пример ниже)
func update(completionHandler: (() -> ())? = nil) {
let semaphore = DispatchSemaphore(value: blocks.count)
DispatchQueue.global(qos: .userInitiated).async {
blocks.forEach { block in
// semaphore.wait()
getData(block) {
semaphore.signal()
}
}
semaphore.wait()
completionHandler?()
}
}
Есть несколько элементов. Необходимо обновить данные у каждого и по завершении выполнить completionHandler. Но почему-то он выполняется, когда данные не еще обновились