使用ASIHTTPRequest时保留和释放委托

时间:2012-11-21 21:36:40

标签: ios asihttprequest

由于ASIHTTPRequests不保留委托,因此您可能会遇到委托在请求完成之前被取消分配的情况。

您可以通过以下方式处理此情况:

[request clearDelegatesAndCancel];
[request release];

但有时你想要完成请求,而你不想取消它。这是实现这一目标的最佳方法吗?

//Retain delegate    

[request delegate:[self retain]];

-(void): requestFinished: (ASIHTTPRequest *) request{
   [self release];
   ...
}

-(void): requestFailed: (ASIHTTPRequest *) request{
   [self release];
   ...
}

1 个答案:

答案 0 :(得分:0)

使用单例类来处理所有这些请求。

我总是使用以下架构对请求进行分组。

(1)如果请求用于显示视图控制器的内容,它们将在视图控制器消失时暂停,在视图控制器出现时恢复,并在视图控制器释放时取消。

(2)如果请求用于向服务器发送信息,并且即使在视图控制器被释放时也需要在那里(例如上传照片),将使用单例类来管理所有这些请求。     我们还可以设置一个屏幕来查看由此单例管理的所有后端正在进行的请求。