Skip to content

Instantly share code, notes, and snippets.

let op1 = Operation1()
let op2 = Operation2()
let adapter = BlockOperation() { [unowned op1, unowned op2] in
op2.data = op1.data
}
adapter.addDependency(op1)
op2.addDependency(adapter)
import Foundation
class OperationObserver: NSObject {
init(operation: AsyncOperation) {
super.init()
operation.addObserver(self, forKeyPath: "finished", options: .new, context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
guard let key = keyPath else {
import Foundation
class HelloWorldOperation: GroupOperation {
override init() {
super.init()
let op = TextOperation(text: "Hello")
let op2 = TextOperation(text: "World")
op2.addDependency(op)
import Foundation
class GroupOperation: AsyncOperation {
let queue = OperationQueue()
var operations: [AsyncOperation] = []
override func execute() {
print("group started")
queue.addOperations(operations, waitUntilFinished: true)
print("group done")
import Foundation
class TextOperation: AsyncOperation {
let text: String
init(text: String) {
self.text = text
}
override func execute() {
import Foundation
class AsyncOperation: Operation {
override var isAsynchronous: Bool {
return true
}
var _isFinished: Bool = false
override var isFinished: Bool {
let op1 = Operation()
op.completionBlock = {
print("done")
}
precedencegroup OperationChaining {
associativity: left
}
infix operator ==> : OperationChaining
@discardableResult
func ==><T: Operation>(lhs: T, rhs: T) -> T {
rhs.addDependency(lhs)
return rhs
}
let op = DemoOperation()
OperationQueue.addOperations([op], waitUntilFinished: false)
op.cancel()
let operationQueue: OperationQueue = OperationQueue()
operationQueue.maxConcurrentOperationCount = 1