首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消ASIHTTPRequest

取消ASIHTTPRequest
EN

Stack Overflow用户
提问于 2012-02-28 06:52:26
回答 2查看 2.3K关注 0票数 1

取消ASIHttpRequest正在进行的请求的正确位置在哪里?这就是我的取消方式,但是当我从一个视图控制器传输到另一个视图控制器而不允许请求完成时,它就会继续崩溃。请求的取消可以正常工作,但是当切换回第一个视图控制器时,它会崩溃。

代码语言:javascript
复制
    -(void)viewWillDisappear:(BOOL)animated
    {
      [super viewWillDisappear:animated];

      if(!DID_FINISH_REQUEST)
      {
        [requestNewReleases setDelegate:nil];
        [requestNewReleases cancel];
        [requestNewReleases clearDelegatesAndCancel];
      }
    }
EN

回答 2

Stack Overflow用户

发布于 2012-02-28 07:28:00

ASIHttpRequest文档中,在dealloc方法中有一个请求被取消的例子:

在请求完成之前安全地处理正在释放的委托。 请求不会保留它们的委托,因此如果您的委托在运行时有可能被取消分配,那么清除请求的委托属性是至关重要的。在大多数情况下,如果您的委托将被取消分配,您可能也希望取消请求,因为您不再关心请求的状态。 在下面的示例中,我们的控制器将一个ASIHTTPRequest存储在保留的实例变量中。在发布对请求的引用之前,我们在它的dealloc实现中调用clearDelegatesAndCancel方法:

代码语言:javascript
复制
- (void)dealloc
{
   [request clearDelegatesAndCancel];
   [request release];
   ...
   [super dealloc];
}
票数 3
EN

Stack Overflow用户

发布于 2013-07-24 06:47:09

这取决于您的架构和应用程序需求-例如。如果有多个http请求,其中一些只需要取消?

然后解决-

代码语言:javascript
复制
for (ASIHTTPRequest *req in ASIHTTPRequest.sharedQueue.operations)
{
    [req cancel];
    [req setDelegate:nil];
}

这将取消并删除分配给默认队列的所有正在进行的请求的委托。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9477637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档