Skip to content
Daniel Thorpe edited this page May 15, 2017 · 27 revisions

Please see: Xcode 8 for Xcode 8 update instructions.

Programming Guide

This guide is intended to provide the high level scope and reasoning behind this frameworks classes. Operations is a framework of layers, where the lowest level defines base types such as Operation and OperationQueue. On top of this core foundation, less abstract but very flexible types, such as BlockOperation, are defined. Finally at the highest level, specialised final classes such as CloudKitOperation are available.

This guide is organised in the same way, explaining each layer as we go, from bottom to top. Lets get started.

Getting Started

  1. What Is ProcedureKit?
  2. Installing
  3. MyFirstOperation
  4. Scheduling
  5. Dependencies

Migrating to ProcedureKit 4.x

  1. Migrating from: Foundation.Operation (NSOperation)
  2. Migrating from: WWDC 2015 "Advanced NSOperations"
  3. Migrating from: PSOperations
  4. Migrating from: "Operations" (ProcedureKit) 3.x

Core Library Features

  1. Observers
  2. Conditions
  3. Logging
  4. Mutual Exclusion

Built-in Procedures

  1. BlockProcedure
  2. ComposedProcedure
  3. DelayProcedure
  4. GroupProcedure
  5. RepeatedProcedure
  6. RetryProcedure

Group Procedure

  1. GroupProcedure

Networking

  1. NetworkDataProcedure
  2. NetworkDownloadProcedure
  3. NetworkUploadProcedure
  4. NetworkProcedure

CloudKit

  1. CloudKitProcedure

Location

  1. UserLocationProcedure
  2. ReverseGeocodeProcedure
  3. ReverseGeocodeUserLocationProcedure

iOS only Procedures

  1. UIProcedure
  2. AlertProcedure

Advanced

  1. Capabilities
  2. Cancellation
  3. Injecting Results
  4. Custom Logging
  5. Groups

Asking questions & getting help

Feel free to ask questions on Issues in the project. You will likely get a response from Dan or a contributor within a day. If you can share code samples, verbose logs, it often helps. Similarly, searching closed issues might help answer your question too 😀. There is also a Slack team where more free flowed discussion of Operations happens. To join, send @danthorpe a direct message (they're open to everyone!) including your email address, and you'll receive an invite 😁

Lastly, we're going to collect, in no particular order, examples of common tasks and what we consider best practices for solving them here.

Clone this wiki locally