跨多个线程的println()会导致混合消息

时间:2015-02-27 12:36:00

标签: ios xcode swift println

所以这成了一个大问题。每当我在多个线程上调用println时,它会将我的消息与彼此混合起来,给我这样的结果:

aeNdtedwt owbrolkro kcM kaM natanoga egarer:rr :aa yda:dd  d(b Flbuolncockct kit ootn o)a 
rarraryaN:ye :t( wF(ouFrnukcn tcMitaoinnoa)ng
)e

我想知道避免这种情况的最佳方法吗?总是从主线程中调用它?请改用NSLog?

1 个答案:

答案 0 :(得分:1)

你可以像这样使用

let delayTimeOne = dispatch_time(DISPATCH_TIME_NOW, 
                                      Int64(1 * Double(NSEC_PER_SEC)))

let delayTimeTwo = dispatch_time(DISPATCH_TIME_NOW, 
                                      Int64(2 * Double(NSEC_PER_SEC)))

let delayTimeThree = dispatch_time(DISPATCH_TIME_NOW, 
                                      Int64(3 * Double(NSEC_PER_SEC)))
dispatch_after(delayTimeOne, dispatch_get_main_queue()) {
    println("test1")
}

dispatch_after(delayTimeTwo, dispatch_get_main_queue()) {
    println("test2")
}

dispatch_after(delayTimeThree, dispatch_get_main_queue()) {
    println("test3")
}

// output
// test1
// test2
// test3
相关问题