我觉得我的问题真的是n00b;如果我不清楚地说出来,请道歉:/
在我的项目中,我使用第三方框架,使用异步NSURLRequests
(RESTful API)为我提取一些数据。
收到并准备好数据后,将调用委托函数didReceiveResponse
。如果出现错误,则会调用didFailWithError
。
问题是:框架无法对请求进行排队,因此如果我按顺序调用请求方法,我只会收到上次发出的请求的响应。
现在的问题是我无法更改框架的代码。鉴于此问题,有没有解决此问题的方法?类似于:对于一组请求, n + 1 请求在请求 n 完成之前不会发出(didReceiveResponse
或didFailWithError
被调用);另外,当一组中的最后一个请求完成时,我得到一种通知。理想情况下,解决方案应该支持iOS3和iOS4的工作。
答案 0 :(得分:2)
似乎您唯一的选择是控制启动请求的方法。为此,我会将所需请求的概念抽象到自己的对象或工厂中:称之为Command
,或SingleRequestFactory
,或其他任何东西。将这些对象保存在一个数组中,当您收到didReceiveResponse
或didFailWithError
时,将下一个Command
出列并使用它构建下一个请求,并将其传递给第三方框架。如果您获得didReceiveResponse
或didFailWithError
并且队列为空,请发布您的通知。
创建一个自己完成所有这些逻辑的对象可能是最好的,这样你的viewcontrollers /抛出这些请求的任何东西都可以告诉对象排队Command
而不保留排队。