Nothing prints out in the console in command line tool Xcode

强颜欢笑 提交于 2019-12-03 18:14:32

问题


Nothing prints out in the console in command line tool Xcode when I run the following code:

import Foundation

class A {
  var someValue = 0

  let concurrentQueue = dispatch_queue_create("queue_for_property", DISPATCH_QUEUE_CONCURRENT)

  func increaseValueBy1000() {
    dispatch_barrier_async(concurrentQueue) {
      for _ in 0 ..< 1000 {
        let v = self.someValue + 1
        print(v)
        self.someValue = v
      }
    }
  }
}

let instance1 = A()

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) {
  instance1.increaseValueBy1000()
}

instance1.increaseValueBy1000()

I don't see any print statement in the console. If I remove barrier line works pretty fine. What I do wrong in this case why my barriers don't allow to print?


回答1:


Applications – such has command-line programs – which do not already have a "run loop" have to call

dispatch_main() // Swift 2
dispatchMain()  // Swift 3

in order to use GCD. From the documentation:

This function "parks" the main thread and waits for blocks to be submitted to the main queue. Applications that call UIApplicationMain (iOS), NSApplicationMain (Mac OS X), or CFRunLoopRun on the main thread must not call dispatch_main.



来源:https://stackoverflow.com/questions/37043857/nothing-prints-out-in-the-console-in-command-line-tool-xcode

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!