2013-06-02 77 views
1

我有2個AFNetoworking操作獲取數據,並且我有一個方法需要完成兩個任務。我已經在互聯網上讀過,我可以有一個NSOperationQueue使1操作依賴於另一個操作完成。雖然這在某些情況下似乎是一個很好的解決方案,但如果我的代碼不適合作爲NSOperation,它似乎很難。如何執行需要完成2個異步任務的操作

例如(出於說明的目的) 1. API調用A獲得的圖像A 2. API調用B獲得另一圖像B 3. maskImage功能掩模圖像B到甲

任何見解將是有幫助!

+0

你爲什麼說你的代碼不適合NSOperation?另外,你是不是不必要地使事情複雜化?只有幾個標誌就足夠了,不是嗎? – Mar0ux

+0

爲什麼這不適合'NSOperation'?我只是做一個簡單的'NSOperation * completionOperation = [NSBlockOperation operationWithBlock:^ {...}];'然後添加您的依賴關係到該操作。這看起來就像是適合'NSOperation'的東西(你當然不希望在主隊列上進行復雜的圖像處理)。 – Rob

+0

@Rob NSBlockOperation看起來不錯,不知道它存在。 – jfisk

回答

3

我不確定你認爲什麼樣的代碼不適合NSOperation,但我想知道你是否使用NSOperation是因爲希望避免編寫自己的NSOperation子類。幸運的是,使用操作隊列比這更簡單。您可以使用NSBlockOperationNSInvocationOperation快速創建操作。

我通常會用一個NSBlockOperation

NSOperation *completionOperation = [NSBlockOperation blockOperationWithBlock:^{ 
    // do my image processing 
    [self applyMaskToImage]; 
}]; 

或者你可以使用一個NSInvocationOperation

NSOperation *completionOperation = [[NSInvocationOperation alloc] initWithTarget:self 
                     selector:@selector(applyMaskToImage) 
                      object:nil]; 

然後,您可以(a)召喚addDependency爲每個兩種下載操作,使completionOperation依賴於兩者;和(b)將completionOperation添加到您自己的隊列中。

+0

謝謝!每天學些新東西。 – jfisk

相關問題