将参数传递给选择器指向函数

时间:2016-02-18 13:37:24

标签: ios swift2

我使用Swift 2.1进行编程。

我在课堂上有一个功能:

private func doTask(button: UIButton) {...}

我想在2秒后调用此函数,我知道我可以使用:

NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "doTask", userInfo: nil, repeats: false)

但是,在selector部分中,如何将参数button: UIButton传递给doTask

1 个答案:

答案 0 :(得分:0)

计时器只能调用以计时器作为参数的方法。选择器只是方法的名称;他们无法携带数据。你必须创建一个带有计时器并调用doTask的新方法。如果要配置内容,可以在userInfo参数中传递数据,但仍需要额外的方法。

这种计时器可能不是你想要的。只需使用dispatch_after

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(2 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
    doTask(button)
}

您可以看到Matt's implementation of delay()使其更易于使用。