ASIHTTP是否支持多线程?

时间:2010-03-09 02:29:22

标签: iphone

ASIHTTP是否支持多线程? 如果确定,我希望每个线程链接到一个UIProgressbar,我该如何构建代码?

由于

InterDev中

2 个答案:

答案 0 :(得分:3)

Yups,ASIHttpRequest可以一次处理多个请求。请参阅帮助documentation并注意此部分。

  

使用队列

     

这个例子做了同样的事情   再次,但我们创造了一个   NSOperationQueue请求我们。

     

使用NSOperationQueue(或   ASINetworkQueue,见下文)给你   更多地控制异步   要求。使用队列时,只有一个   可以运行一定数量的请求   同一时间。如果你添加更多   请求比队列的要求   maxConcurrentOperationCount属性,   请求将等待其他人   在他们开始之前完成。

     
      
  • (IBAction为)grabURLInTheBackground:(ID)发送方   {if(![self queue]){     [self setQueue:[[[NSOperationQueue alloc]   init] autorelease]]; }    NSURL * url = [NSURL URLWithString:@“http://allseeing-i.com”];   ASIHTTPRequest * request =   [ASIHTTPRequest requestWithURL:url];
      [请求setDelegate:self];
      [请求   setDidFinishSelector:@selector(requestDone :)];   [请求   setDidFailSelector:@selector(requestWentWrong :)];   [[self queue] addOperation:request];   // queue是一个NSOperationQueue}

  •   
  • (void)requestDone:(ASIHTTPRequest *)request {NSString * response = [request responseString]; }

  •   
  • (无效)requestWentWrong:(ASIHTTPRequest   *)请求{NSError * error = [request error]; }

  •   
     

在上面的示例中,'queue'是一个   保留了NSOperationQueue属性   我们的控制器。

     

我们正在设置自定义选择器   将在请求时调用   成功还是失败。如果你没有设置   这些,默认值(requestFinished:   和requestFailed :)将被用作   在上一个例子中。

     

处理成功和失败   多个请求

     

如果你需要处理成功而且   许多不同类型的失败   请求,您有几种选择:

     
      
  1. 如果您的请求属于同一种广泛类型,但您想要   区分它们,你可以设置   userInfo NSDictionary属性   每个请求都有您自己的自定义数据   你可以读完你的/   失败的委托方法。
  2.   
  3. 如果你需要处理完全不同的成功和失败   每个请求的方式,设置不同   setDidFinishSelector /   每个请求的setDidFailSelector
  4.   
  5. 对于更复杂的情况,或者您要解析响应的位置   在后台,创造一个最小的   每个ASIHTTPRequest的子类   请求类型和覆盖   requestFinished:和failWithProblem:。
  6.   

希望这有帮助。

谢谢,

Madhup

答案 1 :(得分:1)

在此处查看示例代码:http://allseeing-i.com/ASIHTTPRequest/How-to-use

它支持异步请求(多线程),您可以使用ASINetworkQueue来监控其进度。