NSTimer中的UserInfo没有传递正确的信息 - Swift

时间:2014-12-17 03:24:16

标签: ios swift selector nstimer userinfo

以下是我正在尝试做的一些示例代码。

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仍会改变。我认为它正在发生,因为传递的值是可选的,所以如果这是问题,如何使它不是可选的?

1 个答案:

答案 0 :(得分:3)

NSTimer的{​​{1}} scheduledTimerWithTimeInterval参数是一个标准参数,尽管您可以将userInfo设置为userInfo 1}},您不能像传统函数那样简单地传入参数,因为AnyObject的选择器只能 传递scheduledTimerWithTimeInterval作为唯一函数参数。因此,如果您要访问计时器NSTimer中存储的值,则secondFunction: 必须指定NSTimer作为参数,例如:

userInfo