所以我在UIViewController的[viewDidLoad]上启动了ASIFormDataRequest。
ASIFormDataRequest *detailRequest = [ASIFormDataRequest requestWithURL:url];
detailRequest.delegate = self;
[detailRequest startAsynchronous];
如果我的UIViewController在我的请求完成之前被释放,则我的应用程序崩溃。
例如,如果我将ASIFormDataRequest添加为实例变量
@property(nonatomic, retain) ASIFormDataRequest *detailRequest;
并取消委托dealloc
-(void)dealloc {
if(self.detailRequest != nil) { self.detailRequest.delegate = nil; }
self.detailRequest = nil;
[super dealloc];
}
该应用程序不再崩溃。
但是我认为没有必要为此创建实例变量,尤其是当我有多个请求时。
有一个更好的方法吗?
最佳答案
我通常创建一个数组并将所有活动请求存储在该数组中。当请求完成时,我将删除请求,而当控制器调用dealloc时,我将取消所有请求并取消委托。
关于iphone - 在没有实例变量的情况下删除dealloc上的委托(delegate),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7600039/