在 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)
我正在尝试使用带有完成处理程序的函数,调用方式如下:
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)