В настоящее время я играю с Grand Central Dispatch и открыл класс под названием DispatchWorkItem
. Документация кажется немного неполной, поэтому я не уверен, что правильно ее использую. Я создал следующий фрагмент и ожидал чего-то другого. Я ожидал, что элемент будет отменен после вызова cancel
на нем. Но по какой-то причине итерация продолжается. Любые идеи, что я делаю неправильно? Код мне кажется хорошим.
@IBAction func testDispatchItems() {
let queue = DispatchQueue.global(attributes:.qosUserInitiated)
let item = DispatchWorkItem { [weak self] in
for i in 0...10000000 {
print(i)
self?.heavyWork()
}
}
queue.async(execute: item)
queue.after(walltime: .now() + 2) {
item.cancel()
}
}