gpt4 book ai didi

Iphone 停止 ASIFormDataRequest

转载 作者:行者123 更新时间:2023-12-03 19:32:10 30 4
gpt4 key购买 nike

当我有一个待处理的 ASIFormDataRequest(作为异步任务启动)仍在执行并且用户按下后退按钮(为了弹出 View )时,我的 viewController 出现问题。

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

我读过这是一个名为“clearDelegatesAndCancel”的方法,但我不知道这是否是我正在寻找的方法。

谢谢

最佳答案

事实是,要调用 clearDelegatesAndCancel,您必须拥有异步运行的 ASIFromDataRequest 对象的句柄。这意味着您应该将其设置为属性,例如...

@interface MyViewController : UIViewController <ASIHTTPRequestDelegate>
{
ASIFormDataRequest *theRequest
...
}

@property (nonatomic, retain) ASIFormDataRequest *theRequest;

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

@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.
}

重点是,您需要进行设置,以便在异步运行时您可以接收到要与之对话的请求。

顺便说一下,这确实是一个很好的做法。如果您的 View Controller 在您的请求返回之前消失(例如从 UINavController 堆栈中弹出),它将尝试在已释放的对象上调用委托(delegate)方法,然后繁荣。

关于Iphone 停止 ASIFormDataRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795233/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com