Dandy Dandy - 1 year ago 159
iOS Question

NSTimer - how to delay in Swift

I have a problem with delaying computer's move in a game.

I've found some solutions but they don't work in my case, e.g.

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

I tried to use this with function
but also to no effects.

What other possibilities there are?

Answer Source

With 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


or with a timer:

func myPerformeCode(timer : NSTimer) {

   // here code to perform
let myTimer : NSTimer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("myPerformeCode:"), userInfo: nil, repeats: false)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download