我使用Swift 2.1进行编程。
我在课堂上有一个功能:
private func doTask(button: UIButton) {...}
我想在2秒后调用此函数,我知道我可以使用:
NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "doTask", userInfo: nil, repeats: false)
但是,在selector
部分中,如何将参数button: UIButton
传递给doTask
?
答案 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()
使其更易于使用。