定时器间隔未触发

时间:2017-09-20 00:59:05

标签: swift timer intervals swift-playground

考虑以下代码:

import Foundation
import PlaygroundSupport

class Test
{
    var interval:Timer?
    var counter = 0

    func start()
    {
        print("Starting ...")
        interval = Timer.scheduledTimer(withTimeInterval: 1, repeats: true)
        {
            timer in
            self.counter += 1
            print(self.counter)
            if (self.counter < 10) { return }

            self.interval?.invalidate()
            self.interval = nil
            print("Done!")
            PlaygroundPage.current.finishExecution()
        }
        interval?.fire()
    }
}


PlaygroundPage.current.needsIndefiniteExecution = true
var test = Test()
test.start()

在Xcode 8.3.3 Playground中运行,但间隔永远不会开始。我失踪了什么?

1 个答案:

答案 0 :(得分:1)

简单的答案是将它添加到你的游乐场:

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

当使用游乐场时,默认情况下游乐场会运行所有代码然后停止,它不知道等待计时器。这段代码告诉操场等待发生的事情。