所以我在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/

10-11 12:38