Swift延迟执行的四种方式

1.perform(必须在主线程中执行)

1
self.perform(#selector(delayExecution), with: nil, afterDelay: 3)
取消
1
NSObject.cancelPreviousPerformRequests(withTarget: self)

2.timer(必须在主线程中执行)

1
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(delayExecution), userInfo: nil, repeats: false)

3.Thread (在主线程会卡主界面)

1
2
Thread.sleep(forTimeInterval: 3)
self.delayExecution()

4.GCD 主线程/子线程

1
2
3
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
self.delayExecution()
}
1
2
3
DispatchQueue.global().asyncAfter(deadline: .now() + 3) {
self.delayExecution()
}