【发布时间】:2016-10-14 19:34:23
【问题描述】:
在操场上使用 Swift 3.0 我有这个代码:
struct Test {
func run() {
var timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { timer in
print("pop")
}
}
}
let test = Test()
test.run()
但是没有任何东西打印到控制台。我已经阅读了How can I use NSTimer in Swift?,并且我在在线答案和教程中看到的大多数计时器的使用都涉及选择器,所以我尝试了这个:
class Test {
func run() {
var timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.peep), userInfo: nil, repeats: false)
}
@objc func peep() {
print("peep")
}
}
let test = Test()
test.run()
似乎仍然没有打印到控制台。如果我添加timer.fire(),那么我会得到控制台打印,但显然这违背了目的。 我需要更改什么才能让计时器运行?
编辑:
所以在我为我的Test 结构调用run 方法之后添加CFRunLoopRun() 就可以了。非常感谢那些回答的人,尤其是@AkshayYaduvanshi(他的评论将我指向CFRunLoopRun())和@JoshCaswell(他们的回答提出了我的计时器仅适用于运行循环的事实)。
【问题讨论】:
-
“在操场上工作”这就是问题所在。
-
查看link
标签: swift cocoa nstimer swift-playground