Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 跨多个线程的println()会导致消息混合_Ios_Xcode_Swift_Println - Fatal编程技术网

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

Ios 跨多个线程的println()会导致消息混合,ios,xcode,swift,println,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?您可以像这样使用 let delayT

所以这正成为一个大问题。每当我跨多个线程调用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?

您可以像这样使用

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

NSLog是线程安全的。否则,您需要使用GCD或主线程的建议。