AsyncOperation aims to ease the pain commonly encountered when having to subclass NSOperation for async tasks.
Let's assume you have a time-consuming task that you'd rather perform on a background-thread.
AsyncOperation provides you with two options for wrapping said task in an asynchronous NSOperation
:
class ExampleOperation : AsyncOperation {
override func main() {
self.state = .Executing
DispatchQueue.global().async {
// perform time-consuming task
self.state = .Finished
}
}
}
AsyncBlockOperation() { operation in
operation.state = .Executing
DispatchQueue.global().async {
// perform time-consuming task
operation.state = .Finished
}
}
AsyncOperation contains a demo app.
Just copy the files in "AsyncOperation/Classes/..."
into your project.
Alternatively you can install AsyncOperation into your project with Carthage (github 'regexident/AsyncOperation'
) or with CocoaPods (pod 'AsyncOperation'
)
AsyncOperation is implemented in 100% Swift 3.
None.
OS X 10.9+ / iOS 8.0+
Vincent Esche (@regexident)
AsyncOperation is available under a modified BSD-3 clause license with the additional requirement of attribution. See the LICENSE
file for more info.