Branch | Status |
---|---|
master | |
develop |
Dispatch
Installation
CocoaPods
Dispatch is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'Dispatch'
Carthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate Dispatch into your Xcode project using Carthage, specify it in your Cartfile
:
github "Swiftification/Dispatch"
Run carthage update
to fetch the Dispatch library and drag into your Xcode project.
And then simply
import DispatchFramework
And your good to go!
Manually
- Download and drop
Dispatch.swift
anywhere you like in your project. - That's it.
Usage
Basic
Dispatch.async(dispatch_get_main_queue()) {
//Code to be run on the main thread
}
Or using the helpers provided by Dispatch.Queue enum
Dispatch.async(Queue.main) {
//Code to be run on the main thread
}
Or using the overloaded method to run on the main thread
Dispatch.async {
//Code to be run on the main thread
}
Types of Dispatch
Async
Dispatch.async(Queue.main) {
//Code to be run on the main thread
}
Sync
let someCustomQueue = dispatch_queue_create("custom.queue.dispatch", DISPATCH_QUEUE_CONCURRENT)
Dispatch.sync(someCustomQueue) {
//Code to be synchronously on someCustomQueue
}
After
Dispatch.after(1.0, queue: Queue.main) {
//Code to be run on the main thread after 1 second
}
Or using the overloaded method to run on the main thread
Dispatch.after(1.0) {
//Code to be run on the main thread after 1 second
}
Once
let token : dispatch_once_t
Dispatch.once(&token) {
//Code to be run only once in App lifetime
}
Queue Helpers
Main queue
let mainQueue = Queue.main
Custom queue
let customConcurrentQueue = Queue.custom("custom.concurrent.queue.dispatch", Queue.Atribute.concurrent)
let customSerialQueue = Queue.custom("custom.serial.queue.dispatch", Queue.Atribute.serial)
Global queues
let priority = 0 // or you use one of the Global priorities (ex: Queue.Priority.UserInteractive)
let globalQueue = Queue.global(priority)
// For comodity there are helpers for getting the Global queues
let globalUserInteractiveQueue = Queue.globalUserInteractive
let globalUserInitiatedQueue = Queue.globalUserInitiated
let globalUtilityQueue = Queue.globalUtility
let globalBackgroundQueue = Queue.globalBackground
TODO
- Carthage compatible
- Chainable methods
- Travis CI
- Unit Tests
- More examples
Communication
- If you find a bug, open an issue.
- If you have a feature request, open an issue.
- If you want to contribute, submit a pull request.
Authors
-
João Mourato, [email protected]
-
Gabriel Peart
License
Dispatch is available under the MIT license. See the LICENSE file for more info.