Ios 在NSO操作中包装异步函数调用

Ios 在NSO操作中包装异步函数调用,ios,multithreading,swift,asynchronous,nsoperation,Ios,Multithreading,Swift,Asynchronous,Nsoperation,我尝试使用一个带有完成处理程序的函数,调用方式如下: myFunc(completion: {(var1, var2) -> Void in // do something interesting with variables }) 我的问题是,我需要它依赖于其他NSOperations,并且具有属于NSOperations的依赖项,因此我需要在NSOperation中包装myFunc()。我该怎么做呢 我已经开始研究对NSOperation进行子类化并实现异步“finished

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

myFunc(completion: {(var1, var2) -> Void in
    // do something interesting with variables
})
我的问题是,我需要它依赖于其他NSOperations,并且具有属于NSOperations的依赖项,因此我需要在NSOperation中包装myFunc()。我该怎么做呢


我已经开始研究对NSOperation进行子类化并实现异步“finished”标志,但似乎应该有一种更简单、更轻量级的方法来实现这一点,而不需要子类,可能使用NSBlockOperation或NSInvocationOperation。

我找到了一种使用AsyncOpKit的解决方案。它允许您在内部异步调用完成后将操作标记为“已完成”。下面是上面定义的函数的示例代码

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)

这个问题相当广泛。。。所以,如果你遇到麻烦,你可以来问一个更具体的问题。