NSTimer - how to delay in Swift

后端 未结 4 996
轮回少年
轮回少年 2020-12-04 18:01

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.sched         


        
相关标签:
4条回答
  • 2020-12-04 18:27

    With Swift 4.2

    With Timer You can avoid using a selector, using a closure instead:

        Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { (nil) in
            // Your code here
        }
    

    Keep in mind that Timer is toll-free bridged with CFRunLoopTimer, and that run loops and GCD are two completely different approaches.... e

    0 讨论(0)
  • 2020-12-04 18:34

    In swift we can delay by using Dispatch_after.

    SWift 3.0 :-

    DispatchQueue.main.asyncAfter(deadline: .now()+4.0) {
    
            alert.dismiss(animated: true, completion: nil)
        }
    
    0 讨论(0)
  • 2020-12-04 18:42

    Swift 3

    With GCD:

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

    or with a timer:

    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

    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)
    
    0 讨论(0)
  • 2020-12-04 18:48

    How about using Grand Central Dispatch?

    https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/index.html

    Valfer has shown you how

    0 讨论(0)
提交回复
热议问题