All apps have asynchronous workflows. Apple's NSOperation
and NSOperationQueue
provide a foundation for building arbitrarily complex workflows. This demo code coincides with my STL CocoaHeads talk on techniques for building "async workflows".
The demo code shows how to:
- use dependent operations
- pass data between operations using a thread-safe key/value store (i.e
Session
) - track progress using
NSProgress
- support an easy to understand cancellation policy
- allow app background execution (with just a few lines of code)
Be sure to review the CocoaHeads presentation slides for additional notes and details.
Here's a short list of related WWDC videos
- WWDC 2015 Advanced NSOperations
- WWDC 2015 Best Practices In Progress Reporting
- WWDC 2017 Modernizing Grand Central Dispatch Usage