【发布时间】:2017-11-01 18:30:23
【问题描述】:
我想知道如果我从 viewDidLoad 方法在主队列中异步调用某些东西会发生什么。一个小实验向我展示了这些结果:
这段代码:
override func viewDidLoad() {
super.viewDidLoad()
firstSelector()
DispatchQueue.main.async {
self.secondSelector()
}
for i in 1...10 {
print(i)
}
thirdSelector()
}
func firstSelector() {
print("First selector fired")
}
func secondSelector() {
print("Second selector fired")
}
func thirdSelector() {
print("Third selector fired")
}
提供这些印刷品:
First selector fired
1
2
3
4
5
6
7
8
9
10
Third selector fired
Second selector fired
所以最后一个被调用的方法是 secondSelector。我认为这是因为主队列是串行的,当我异步调用某个方法(在这种情况下为 secondSelector)时,它会立即返回并等待所有其他方法完成。队列没有任务后,它会完成我异步调用的方法。我的想法是对的吗?
【问题讨论】:
标签: ios swift asynchronous concurrency grand-central-dispatch