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)
这个问题相当广泛。。。所以,如果你遇到麻烦,你可以来问一个更具体的问题。