2015-07-11 100 views
1

我試圖用一個完成處理程序函數,這樣調用:裹異步函數調用在的NSOperation

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

我的問題是,我需要依賴於其他NSOperations和有依賴性那是NSOperations,所以我需要將myFunc()包裝在NSOperation中。我會如何去做這件事?

我已經開始研究NSOperation的子類化和實現異步「完成」標誌,但它似乎應該有一個更簡單,更輕量級的方式來做到沒有子類,可能使用NSBlockOperation或NSInvocationOperation。

+1

這個問題是非常寬泛的......所以[從這裏開始](http://www.raywenderlich.com/19788/how-to-use-nsoperations-and-nsoperationqueues)和如果遇到麻煩,你可以問一個更具體的問題。 – nhgrif

回答

0

我找到了AsyncOpKit的解決方案。它允許您在內部異步調用完成後標記操作「已完成」。下面是該函數的代碼示例上述

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

定義,那麼只需使用MyFuncOperation,就像任何NSOperation子類。

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

https://cocoapods.org/pods/AsyncOpKit