首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Iphone停止ASIFormDataRequest

Iphone停止ASIFormDataRequest
EN

Stack Overflow用户
提问于 2011-01-25 23:21:54
回答 1查看 1.3K关注 0票数 3

当我有一个仍在执行的挂起的ASIFormDataRequest (作为异步任务启动),并且用户按下back按钮(为了弹出视图)时,我的viewController出现了问题。

有什么方法可以停止这个异步任务吗?

我读到过一种叫做"clearDelegatesAndCancel“的方法,但我不知道它是否是我要找的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-25 23:56:11

问题是,要调用clearDelegatesAndCancel,您必须拥有异步运行的ASIFromDataRequest对象的句柄。这意味着你应该把它设置为一个属性,就像...

代码语言:javascript
复制
@interface MyViewController : UIViewController <ASIHTTPRequestDelegate>
{
    ASIFormDataRequest *theRequest
    ...
}

@property (nonatomic, retain) ASIFormDataRequest *theRequest;

然后在你的.m中,不要声明一个新的request对象,只需将你的formdatarequest分配给类的iVar:

代码语言:javascript
复制
@synthesize theRequest;

-(void)viewDidLoad  //or whatever
{
    self.theRequest = [ASIFormDataRequest requestWithUrl:myUrl];
    // then configure and fire the request, being sure to set .delegate to self
}

-(void)viewWillDisappear:(BOOL)animated //or whatever
{ 
   [self.theRequest clearDelegatesAndCancel];
}

 -(void)dealloc
{
    [theRequest release];  //don't not do this.
}

重点是,您需要对自己进行设置,以便在异步运行时有与之对话的请求。

顺便说一下,这真的是一个很好的实践。如果你的视图控制器在你的请求返回之前离开了(比如从UINavController堆栈中弹出),它将尝试调用一个已释放的对象上的委托方法,然后轰隆一声。

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

https://stackoverflow.com/questions/4795233

复制
相关文章

相似问题

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