GCD 的简单应用 Swift

  let queue = dispatch_get_global_queue(
      DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

获取 GCD 的 queue 的引用,GCD 不是基于面向对象,还是基于 Function。

拥有了 queue,就可以向 queue 发送 closure:

  dispatch_async(queue) {
    //closure
  }

在子 queue 中无法操作界面 UI,所以如果要比如要对TableView进行reloadData操作,就必须在主线程中,这时候可以获得main queue来进行操作,main queue对应着main thread

  dispatch_async(dispatch_get_main_queue()) {
    self.tableView.reloadData()
  }

另外dispatch_async()是异步执行,但是dispatch_sync是同步的 GCD,dispatch_sync也会将 closure 在后台运行,但是主线程回一直等待 closure 完成之后才能进行下一步操作。

你可能感兴趣的:(GCD 的简单应用 Swift)