Skip to content

Instantly share code, notes, and snippets.

func executeOnMain() {
if !Thread.isMainThread {
DispatchQueue.main.async(execute: {() -> Void in
executeOnMain()
})
return
}
// do something
}
OperationQueue.main
let operationQueue: OperationQueue = OperationQueue()
let operationQueue: OperationQueue = OperationQueue()
operationQueue.maxConcurrentOperationCount = 1
let op = DemoOperation()
OperationQueue.addOperations([op], waitUntilFinished: false)
op.cancel()
precedencegroup OperationChaining {
associativity: left
}
infix operator ==> : OperationChaining
@discardableResult
func ==><T: Operation>(lhs: T, rhs: T) -> T {
rhs.addDependency(lhs)
return rhs
}
let op1 = Operation()
op.completionBlock = {
print("done")
}
import Foundation
class AsyncOperation: Operation {
override var isAsynchronous: Bool {
return true
}
var _isFinished: Bool = false
override var isFinished: Bool {
import Foundation
class TextOperation: AsyncOperation {
let text: String
init(text: String) {
self.text = text
}
override func execute() {
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")