当我有一个仍在执行的未决ASIFormDataRequest(作为异步任务启动)并且用户按下“后退”按钮(以弹出视图)时,我的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.
}
关键是,您需要进行自我设置,以便在异步运行请求时与之对话。
顺便说一句,这确实是一个好习惯。如果您的视图控制器在您的请求返回之前就消失了(例如,通过从UINavController堆栈中弹出),它将尝试在已释放对象上调用委托方法,然后繁荣。
关于iphone - iPhone停止ASIFormDataRequest,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4795233/