在Swift中,在5秒内调用方法的最简单方法是什么(非阻塞)?

时间:2015-04-13 22:44:09

标签: ios swift

我有这个,但似乎过于复杂:

    var connectionTimer = MZTimerLabel(timerType: MZTimerLabelTypeTimer)
    connectionTimer.delegate = self
    connectionTimer.tag = 0
    connectionTimer.setCountDownTime(5)
    connectionTimer.start()


    func timerLabel(timerLabel: MZTimerLabel!, finshedCountDownTimerWithTime countTime: NSTimeInterval) {
          self.callFinished()
    }

2 个答案:

答案 0 :(得分:5)

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC), dispatch_get_main_queue()) {
    self.callFinished()
}

这是令人敬畏的多功能库Grand Central Dispatch的一部分,它不仅可以执行延迟,还可以执行各种并发操作,您几乎肯定会遇到漏洞!幸运的是,因为在你的情况下你正在回调主队列,你的代码都不会同时执行,因此在这种情况下没有什么可担心的。

答案 1 :(得分:-1)

试试这个

let delayTimer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: Selector("delayed"), userInfo: nil, repeats: false)

func delay()  { println ("hi") }

五秒后它会调用delay