Consider this code:
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()
Running this in Xcode 8.3.3 Playground but the interval never starts. What am I'm missing?
 
    