Skip to content

Instantly share code, notes, and snippets.

@kakajika
Created October 26, 2015 08:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kakajika/a71480e71d18151db9d8 to your computer and use it in GitHub Desktop.
Save kakajika/a71480e71d18151db9d8 to your computer and use it in GitHub Desktop.
Cancellable delayed task in Swift.
class CancellableDelayedTask {
var cancelled = false
func run(delay: Double, task: () -> Void ) {
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue()) { [unowned self] () -> Void in
if !self.cancelled {
task()
}
}
}
func cancel() {
cancelled = true
}
}
let task = CancellableDelayedTask()
task.run(3.0 * Double(NSEC_PER_SEC)) { () -> Void in
// Do something...
}
task.cancel()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment