---
agentTools:
  projectIndex: https://operations.readme.io/llms.txt
---

# What is Operations?

What is this all about, and what have you done with `NSOperation`?

Operations is a framework which provides advanced features to [`NSOperation`](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/NSOperation_class/) and [`NSOperationQueue`](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/NSOperationQueue_class/index.html#//apple_ref/occ/cl/NSOperationQueue).

`Operation` is a subclass of `NSOperation` and is used to perform *work* on an instance of `OperationQueue` which is a subclass of `NSOperationQueue`. `Operation` itself however is an abstract class and should always be subclassed to perform specialized *work*.

What do we mean by *work*? This can be anything, for example number crunching, data processing, parsing or retrieval, view controller presentation, or just about anything.

[block:api-header]
{
  "type": "basic",
  "title": "What does the Operations framework provide?"
}
[/block]

The framework provides the basic `Operation` and `OperationQueue` types, the former of which will often be subclassed in applications. It also has other helper types, which are "building blocks" which when used together with `Operation` subclasses allow for advanced usage. On top of this there are a number of "feature" operations. These are `Operation` subclasses which can be used directly and perform commonly needed functionality, like `UserLocationOperation`.