2

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

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

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

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

提前致谢!

4

1 回答 1

3

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

就像是:

for (ASIHTTPRequest *req in [queue operations])
{
    if (shouldCancel(req))
        [req cancel];
}
于 2011-01-30T13:21:18.907 回答