以下是我正在尝试做的一些示例代码。
func firstFunction() {
var timer = NSTimer.scheduledTimerWithTimeInterval(0.6, target: self, selector: Selector("secondFunction:"), userInfo: self.data!.getInfo(), repeats: false);
println("Info: \(timer.userInfo)");
}
func secondFunction(value: Int) {
println("Called with \(value)");
}
以下是输出:
Info: Optional((
2
))
和Called with 140552985344960
用############调用也在不断变化。即使我只使用一个数字来代替self.data!.getInfo
,我仍然会得到Info: Optional(2)
作为输出,而带有输出的Called仍会改变。我认为它正在发生,因为传递的值是可选的,所以如果这是问题,如何使它不是可选的?
答案 0 :(得分:3)
NSTimer
的{{1}} scheduledTimerWithTimeInterval
参数不是一个标准参数,尽管您可以将userInfo
设置为userInfo
1}},您不能像传统函数那样简单地传入参数,因为AnyObject
的选择器只能 传递scheduledTimerWithTimeInterval
作为唯一函数参数。因此,如果您要访问计时器NSTimer
中存储的值,则secondFunction:
必须指定NSTimer
作为参数,例如:
userInfo