调度组通知不工作

时间:2018-01-10 03:09:57

标签: ios swift grand-central-dispatch

我正在学习GCD。并做一个像这样的例子: almost ordered enter image description here

我创建函数调用三个异步块并使用调度组进入和离开每个块 似乎group.enter(),group.leave()被调用了三次,但该组没有通知我。

我想问这个代码有问题,请帮帮我。 这是我的代码:

func myFunction() {
  let group = DispatchGroup()
  let queue = DispatchQueue.global(qos: .default)
  print("start")

  for i in 0..<3 {
    let count = 100/(i+1)
    var a = 0

    group.enter()
    print("enter queue \(i)")
    queue.async(group: group, execute: {
        for index in 0..<count {
            a = a + index
        }

        print("0..<\(count) with i: \(i)", a)
        group.leave()
        print("leave queue \(i)")
    })
  }

  group.notify(queue: .main) {
    print("after queue doing")
  }
}

1 个答案:

答案 0 :(得分:2)

如果您正在Playground上执行异步代码,那么您需要通过在顶部添加以下代码来启用无限期执行:

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

我可以在Playground上测试你的代码并且它可以正常工作。