{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","params":[],"results":{"codes":[]},"settings":""},"next":{"description":"","pages":[]},"title":"What is Operations?","type":"basic","slug":"what","excerpt":"What is this all about, and what have you done with `NSOperation`?","body":"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). \n\n`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*.\n\nWhat 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.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"What does the Operations framework provide?\"\n}\n[/block]\nThe 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`.","updates":[],"order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"5673010aab31360d0032a284","project":"5672fc989996590d00c22c65","__v":11,"createdAt":"2015-12-17T18:38:02.193Z","user":"5654ea8be0d82b0d00ab5747","category":{"sync":{"isSync":false,"url":""},"pages":["5673014406b19d0d00106919","567301539d4c060d009da8b4","56730163fc60740d00be8ab7"],"title":"Getting Started","slug":"getting-started","order":0,"from_sync":false,"reference":false,"_id":"567301169d4c060d009da8b3","project":"5672fc989996590d00c22c65","version":"5672fc989996590d00c22c68","__v":3,"createdAt":"2015-12-17T18:38:14.940Z"},"githubsync":"","version":{"version":"2.5.0","version_clean":"2.5.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["5672fc999996590d00c22c69","567301169d4c060d009da8b3","56730183547bee0d00997d1a","5673018a06b19d0d0010691b","567301b53054630d00fe9288","567400638565060d009a86fb","5674017bf79ca90d00ad2f67"],"_id":"5672fc989996590d00c22c68","__v":7,"createdAt":"2015-12-17T18:19:04.699Z","project":"5672fc989996590d00c22c65","releaseDate":"2015-12-17T18:19:04.699Z"}}

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`.