在ASINetworkQueue中取消一个(或几个)某些ASIHTTPRequests

时间:2011-01-30 11:40:49

标签: iphone ipad asihttprequest nsoperation nsoperationqueue

在我的iPhone / iPad应用程序中,我通过“APIManager”处理所有网络和Web-API请求(单身,在AppDelegate中创建)。

目前,APIManager只包含一个ASINetworkQueue,其中添加并执行了APIRequests(ASIHTTPRequest的子类)。在每个APIRequest的userInfo中,添加了一些处理请求的附加信息(比如是否应该将响应解析为Core Data - 如果是,那么实体是否 - )。

当用户从一个视图(ViewA)移动到另一个视图(ViewX)时,我希望能够取消ViewA要求APIManager执行的所有请求,同时让其他人继续。

是否有一些功能可以在ASINetworkQueue(或NSOperationQueue)中找到某个请求并向其发送取消消息?也许使用添加到请求的userInfo的参数?

提前致谢!

1 个答案:

答案 0 :(得分:3)

[queue operations]将返回队列中的NSArray项目,然后您可以迭代并在任何您喜欢的项目上调用“取消”。

类似的东西:

for (ASIHTTPRequest *req in [queue operations])
{
    if (shouldCancel(req))
        [req cancel];
}