2

由于 ASIHTTPRequests 不保留委托,您可能会遇到委托在请求完成之前被释放的情况。

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

[request clearDelegatesAndCancel];
[request release];

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

//Retain delegate    

[request delegate:[self retain]];

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

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

1 回答 1

0

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

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

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

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

于 2012-11-22T00:32:53.643 回答