【发布时间】:2014-11-09 09:33:27
【问题描述】:
只是一个简单的任务,但我遇到了麻烦。尝试另辟蹊径,但失败了。
如何使用先前声明的变量来初始化 NSTimer? var 和 let 都没有帮助。
【问题讨论】:
标签: xcode variables swift nstimer
只是一个简单的任务,但我遇到了麻烦。尝试另辟蹊径,但失败了。
如何使用先前声明的变量来初始化 NSTimer? var 和 let 都没有帮助。
【问题讨论】:
标签: xcode variables swift nstimer
试试:
var interval:NSTimeInterval = 1.0
var timer = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "timerRedraw:", userInfo: nil, repeats: true)
专业提示,希望得到赞赏的仅供参考:Swift 函数也应该以小写字母开头(即“timerRedraw”)。
【讨论】:
viewDidLoad”方法中。这正是另一个正确回答的人所说的。为此,我给了他 +1。
属性的初始值(在您的情况下:timer)不能依赖于类的另一个属性(在您的情况下:interval)。
因此,您必须将分配 timer = NSTimer(interval, ...) 移动到
类,例如进入viewDidLoad。因此,timer 必须定义为
可选或隐式展开可选。
还要注意Selector(...) 将文字 string 作为参数,而不是方法本身。
所以这应该有效:
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 ...
}
【讨论】: