在我的iPhone / iPad应用程序中,我通过“APIManager”处理所有网络和Web-API请求(单身,在AppDelegate中创建)。
目前,APIManager只包含一个ASINetworkQueue,其中添加并执行了APIRequests(ASIHTTPRequest的子类)。在每个APIRequest的userInfo中,添加了一些处理请求的附加信息(比如是否应该将响应解析为Core Data - 如果是,那么实体是否 - )。
当用户从一个视图(ViewA)移动到另一个视图(ViewX)时,我希望能够取消ViewA要求APIManager执行的所有请求,同时让其他人继续。
是否有一些功能可以在ASINetworkQueue(或NSOperationQueue)中找到某个请求并向其发送取消消息?也许使用添加到请求的userInfo的参数?
提前致谢!
答案 0 :(得分:3)
[queue operations]
将返回队列中的NSArray项目,然后您可以迭代并在任何您喜欢的项目上调用“取消”。
类似的东西:
for (ASIHTTPRequest *req in [queue operations])
{
if (shouldCancel(req))
[req cancel];
}