2011-02-16 66 views
0

我覺得我的問題確實是n00b;道歉,如果我沒有說清楚:/如何在底層框架不支持排隊時排隊請求?

在我的項目中,我正在使用異步NSURLRequests(RESTful API)爲我提取一些數據的第三方框架。 收到數據並準備就緒後,調用代理功能didReceiveResponse。在錯誤情況下調用didFailWithError

問題是:框架無法排隊請求,所以如果我按順序調用請求方法,我只收到最後發出請求的響應。

現在的問題是我無法更改框架的代碼。鑑於這有什麼辦法解決這個問題?例如:對於一組請求,n + 1請求不發出,直到請求n完成(或者調用didReceiveResponsedidFailWithError);另外,當一個集合中的最後一個請求完成時,我得到一種通知。理想情況下,解決方案應該支持iOS3和iOS4。

+0

什麼是框架? – deanWombourne 2011-02-16 16:04:31

+0

@deanWombourne:框架不公開。 – matm 2011-02-16 16:34:09

回答

2

看起來你唯一的選擇就是控制你通過開始請求的方法。爲此,我會將想要的請求的概念抽象爲它自己的對象或工廠:稱之爲CommandSingleRequestFactory或其他。將這些對象保存在一個數組中,當您收到一個didReceiveResponsedidFailWithError時,請將下一個Command取出並用它構造下一個請求,並將其傳遞給第三方框架。如果您收到didReceiveResponsedidFailWithError且隊列爲空,請發佈您的通知。

它可能是最好的創建一個對象,它自己完成所有這些邏輯,以便您的viewcontrollers /任何拋出這些請求可以告訴對象排隊Command而不保留隊列本身。