NSTimer – 如何在Swift中延迟

我有一个延迟电脑在游戏中移动的问题。

我find了一些解决scheme,但他们不工作在我的情况下,例如

var delay = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: nil, userInfo: nil, repeats: false) 

我试图用这个functionfire但也没有影响。

还有什么其他的可能性?

Swift 3

用GCD:

 let delayInSeconds = 4.0 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayInSeconds) { // here code perfomed with delay } 

或用定时器:

 func myPerformeCode() { // here code to perform } let myTimer : Timer = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(self.myPerformeCode), userInfo: nil, repeats: false) 

Swift 2

用GCD:

 let seconds = 4.0 let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) dispatch_after(dispatchTime, dispatch_get_main_queue(), { // here code perfomed with delay }) 

或用定时器:

 func myPerformeCode(timer : NSTimer) { // here code to perform } let myTimer : NSTimer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("myPerformeCode:"), userInfo: nil, repeats: false) 

在迅速,我们可以延迟使用Dispatch_after.

SWIFT 3.0: –

 DispatchQueue.main.asyncAfter(deadline: .now()+4.0) { alert.dismiss(animated: true, completion: nil) }