【发布时间】:2018-02-06 08:39:45
【问题描述】:
为什么这段代码会导致崩溃?
DispatchQueue.main.sync {
// Operation To Perform
}
为什么我们必须这样写:-
DispatchQueue.global().async(execute: {
print("test")
DispatchQueue.main.sync{
print("main thread")
}
})
当我们在 CellForRowAt 或任何其他线程中编写代码时,它会在主线程或全局线程中以同步或异步方式工作?
【问题讨论】:
-
为什么会崩溃 简而言之调用同步并定位当前队列是一个死锁(调用队列等待同步块完成,但它没有启动,因为目标队列(相同)正忙于等待完成的同步调用),这可能就是崩溃的原因。
-
对于第二个块:您正在创建全局队列,然后您正在获取主队列,所以现在没有死锁
标签: ios iphone swift multithreading grand-central-dispatch