在 NSOperation 中包装异步函数调用

Wrap Asynchronous Function Call In an NSOperation

我正在尝试使用带有完成处理程序的函数,调用方式如下:

myFunc(completion: {(var1, var2) -> Void in
    // do something interesting with variables
})

我的问题是我需要它依赖于其他 NSOperations 并且具有 NSOperations 的依赖性,因此我需要将 myFunc() 包装在 NSOperations 中。我该怎么做呢?

我已经开始研究 NSOperation 的子类化并实现异步 'finished' 标志,但似乎应该有一种更简单、更轻量级的方法可以在没有子类的情况下执行此操作,可能使用 NSBlockOperation 或 NSInvocationOperation .

我找到了一个使用 AsyncOpKit 的解决方案。它允许您在内部异步调用完成后标记一个操作'finished'。这是上面定义的函数的示例代码

class MyFuncOperation: AsyncOperation {
    override main() {
        myFunc(completion: {(var1, var2) -> Void in
            // do something interesting with variables
            finish()
        })
    }
}

然后像使用任何 NSOperation 子类一样使用 MyFuncOperation

let operation = MyFuncOperation()
NSOperationQueue.currentQueue()!.addOperation(operation)

https://cocoapods.org/pods/AsyncOpKit