定义一个变量为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)
    }

    ...