这只是一项简单的任务,但我遇到了麻烦。试图采取不同的方式,但失败了。
如何使用声明的先前变量初始化NSTimer? var和nor都没有帮助。
答案 0 :(得分:10)
属性的初始值(在您的情况下为timer
)不能依赖于该类的另一个属性(在您的情况下:interval
)。
因此,您必须将分配timer = NSTimer(interval, ...)
移动到方法中
等级,例如进入viewDidLoad
。因此,timer
必须定义为
可选或隐式解包可选。
另请注意,Selector(...)
将文字字符串作为参数,而不是方法本身。
所以这应该有效:
class ViewController: UIViewController {
var interval : NSTimeInterval = 1.0
var timer : NSTimer!
func timerRedraw() {
}
override func viewDidLoad() {
super.viewDidLoad()
timer = NSTimer(timeInterval: interval, target: self, selector: Selector("timerRedraw"), userInfo: nil, repeats: true)
// ...
}
// Other methods ...
}
答案 1 :(得分:0)
尝试:
var interval:NSTimeInterval = 1.0
var timer = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "timerRedraw:", userInfo: nil, repeats: true)
pro-tip并希望得到赞赏的FYI:Swift函数也应该以小写字母开头(即“timerRedraw
”)。