定义一个变量为AnyObject,这样以后可以改成NSTimer--Swift
Define a variable as AnyObject so that it can be changed later to NSTimer--Swift
所以,我正在尝试在 swift 中制作一个计时器(运行 正确)。
func doSomething(){
println("Did something")
}
@IBActionFunc createTimer: AnyObject{
var timer = NSTimer(timeInterval: 0.2, target: self, selector: "doSomething", userInfo: nil, repeats: true)
}
@IBActionFunc stopTimer: AnyObject{
timer.invalidate()
}
其他选项:
var timer:AnyObject = AnyObject
func doSomething(){
println("Did something")
}
@IBActionFunc createTimer: AnyObject{
timer = NSTimer(timeInterval: 0.2, target: self, selector: "doSomething", userInfo: nil, repeats: true)
}
@IBActionFunc stopTimer: AnyObject{
timer.invalidate()
}
我不确定这是否真的有效。从我的测试来看,这不是因为 "timer" 被定义为局部变量(?),所以它不能从其他函数访问(?)。为了尝试解决这个问题,我首先将 "var timer" 定义为 AnyObject,以便以后可以将其重新定义为任何对象。可悲的是,我得到了疯狂的错误而且没有。我什至需要做第二件事,还是应该做第一件事?提前致谢!
你是对的,你现在有一个局部变量,所以你不能在其他函数中引用它。你需要一个实例变量,比如:
class MyClass {
var timer: NSTimer
...
@IBActionFunc createTimer: AnyObject{
timer = NSTimer(timeInterval: 0.2, target: self, selector: "doSomething", userInfo: nil, repeats: true)
}
...
所以,我正在尝试在 swift 中制作一个计时器(运行 正确)。
func doSomething(){
println("Did something")
}
@IBActionFunc createTimer: AnyObject{
var timer = NSTimer(timeInterval: 0.2, target: self, selector: "doSomething", userInfo: nil, repeats: true)
}
@IBActionFunc stopTimer: AnyObject{
timer.invalidate()
}
其他选项:
var timer:AnyObject = AnyObject
func doSomething(){
println("Did something")
}
@IBActionFunc createTimer: AnyObject{
timer = NSTimer(timeInterval: 0.2, target: self, selector: "doSomething", userInfo: nil, repeats: true)
}
@IBActionFunc stopTimer: AnyObject{
timer.invalidate()
}
我不确定这是否真的有效。从我的测试来看,这不是因为 "timer" 被定义为局部变量(?),所以它不能从其他函数访问(?)。为了尝试解决这个问题,我首先将 "var timer" 定义为 AnyObject,以便以后可以将其重新定义为任何对象。可悲的是,我得到了疯狂的错误而且没有。我什至需要做第二件事,还是应该做第一件事?提前致谢!
你是对的,你现在有一个局部变量,所以你不能在其他函数中引用它。你需要一个实例变量,比如:
class MyClass {
var timer: NSTimer
...
@IBActionFunc createTimer: AnyObject{
timer = NSTimer(timeInterval: 0.2, target: self, selector: "doSomething", userInfo: nil, repeats: true)
}
...