如何制作重复特定次数的NSTimer?

时间:2014-11-08 22:04:38

标签: swift nstimer

我想使用NSTimer每隔0.5秒调用一次函数50次,但我唯一的选择是让计时器无限期运行或创建不重复的计时器。我可以使用计时器来做我想做的事情,还是应该尝试使用别的东西?

2 个答案:

答案 0 :(得分:7)

您只需使用类变量跟踪函数调用的数量。

一旦满足最大功能调用次数,就停止设置下一个定时器。

使用iOS UIViewController类作为示例:

class ViewController: UIViewController {

    var timer:NSTimer? = nil;
    var times:Int = 0;

    override func viewDidLoad() {
        super.viewDidLoad()        
        startTimer()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func startTimer() {

        timer = NSTimer.scheduledTimerWithTimeInterval(0.5, 
                                                 target: self, 
                                                 selector: "onTick:", 
                                                 userInfo: nil,
                                                 repeats: false)

    }

    func onTick(timer:NSTimer){
        println("Fired \(self.times)")
        times += 1
        // call your function
        if times < 50 {  // set the next timer 
             self.startTimer()
        }
    }

答案 1 :(得分:0)

您可以在具有递归选择器和条件的函数中创建计时器(timeoutCounter <50):

class ViewController: UIViewController {

    var timoutCounter:Int = 0
    let kTimeoutWaitingTime = 50

    override func viewDidLoad() {
        super.viewDidLoad()        
        timeout()
    }

    func timeout() {

        if timoutCounter < kTimeoutWaitingTime {

            timoutCounter += 1    
            NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: #selector(ViewController.timeout), userInfo: nil, repeats: false)

        }
    }
}