Eri*_*ric 4 nstimer uikit foundation swift swift-playground
我想知道如何使用NSTimerSwift游乐场内部.之前已经问过这个问题,但没有一个答案真正回答了这个问题.
这是我的Playground代码:
import Foundation
class MyClass {
func startTimer() {
NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "onTimer:", userInfo: nil, repeats: true)
}
func onTimer(timer:NSTimer!) {
println("Timer here")
}
}
var anInstance = MyClass()
anInstance.startTimer()
Run Code Online (Sandbox Code Playgroud)
实例化NSTimer与scheduledTimerWithTimeInterval创建计时器,并在当前运行的循环时间表吧.
但这种方法onTimer从未被调用过.为什么?
rin*_*aro 12
首先,您的onTimer方法必须声明为@objc或NSTimer无法找到.
至于你的问题,那是因为你还没有开始运行循环.
要做到这一点,CFRunLoopRun()我认为是最简单的解决方案.
import Foundation
class MyClass {
func startTimer() {
NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "onTimer:", userInfo: nil, repeats: true)
}
@objc func onTimer(timer:NSTimer!) {
println("Timer here")
}
}
var anInstance = MyClass()
anInstance.startTimer()
CFRunLoopRun() // <-- HERE!
Run Code Online (Sandbox Code Playgroud)
为了完整起见,正如@MartinR在评论中提到的那样,你也可以使用 XCPSetExecutionShouldContinueIndefinitely()
import Foundation
import XCPlayground
XCPSetExecutionShouldContinueIndefinitely()
class MyClass {
func startTimer() {
NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "onTimer:", userInfo: nil, repeats: true)
}
@objc func onTimer(timer:NSTimer!) {
println("Timer here")
}
}
var anInstance = MyClass()
anInstance.startTimer()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Playground仅运行时间轴中指定的秒数:

| 归档时间: |
|
| 查看次数: |
3583 次 |
| 最近记录: |