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 | Thread.sleep(forTimeInterval: 3) |
4.GCD 主线程/子线程
1 | DispatchQueue.main.asyncAfter(deadline: .now() + 3) { |
1 | DispatchQueue.global().asyncAfter(deadline: .now() + 3) { |