Skip to content

Instantly share code, notes, and snippets.

@IanKeen
Last active March 6, 2019 16:59
Show Gist options
  • Save IanKeen/9c501e1dedd1a81e5018 to your computer and use it in GitHub Desktop.
Save IanKeen/9c501e1dedd1a81e5018 to your computer and use it in GitHub Desktop.
Simple NSTimer extension to support closures
extension NSTimer {
private class TimerClosure {
private let closure: (NSTimer) -> Void
init(closure: (NSTimer) -> Void) { self.closure = closure }
@objc func selector(timer: NSTimer) { self.closure(timer) }
}
static func scheduledTimerWithTimeInterval(ti: NSTimeInterval, closure aClosure: (NSTimer) -> Void, userInfo: AnyObject?, repeats yesOrNo: Bool) -> NSTimer {
let wrapped = TimerClosure(closure: aClosure)
return NSTimer.scheduledTimerWithTimeInterval(ti, target: wrapped, selector: "selector:", userInfo: userInfo, repeats: yesOrNo)
}
static func scheduledTimerWithTimeInterval(ti: NSTimeInterval, userInfo: AnyObject?, repeats yesOrNo: Bool, closure aClosure: (NSTimer) -> Void) -> NSTimer {
let wrapped = TimerClosure(closure: aClosure)
return NSTimer.scheduledTimerWithTimeInterval(ti, target: wrapped, selector: "selector:", userInfo: userInfo, repeats: yesOrNo)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment