将变量定义为AnyObject,以便以后可以将其更改为NSTimer - Swift

时间:2015-04-26 14:56:56

标签: ios swift nstimer

所以,我正试图在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()
}

我不确定这是否真的有效。从我的测试来看,它并不是因为"计时器"被定义为局部变量(?),因此无法从其他函数(?)访问它。为了解决这个问题,我首先定义了" var timer"到AnyObject,以便以后可以重新定义它。可悲的是,我得到了疯狂的错误而且没有。我是否应该再做第二件事,或者第一件事是否有效?提前谢谢!

1 个答案:

答案 0 :(得分:1)

你是正确的,因为你目前有一个局部变量,所以你不能在其他函数中引用它。您需要一个实例变量,例如:

class MyClass {
    var timer: NSTimer

    ...

    @IBActionFunc createTimer: AnyObject{
        timer = NSTimer(timeInterval: 0.2, target: self, selector: "doSomething", userInfo: nil, repeats: true)
    }

    ...