在iOS中优化多个异步图像下载

时间:2011-03-03 03:53:39

标签: ios optimization nsurlconnection

我想从服务器下载很多图片。我怎样才能尽快做到这一点?目前我正在使用:

UIImage* myImage = [UIImage imageWithData: 
[NSData dataWithContentsOfURL: 
[NSURL URLWithString: @"http://example.com/image.jpg"]]];

这很痛苦。同时(异步)下载多个图像是否有任何速度增加,如果是这样,有多少是太多?

1 个答案:

答案 0 :(得分:2)

您无法获得最佳连接数的明确答案,因为没有连接。它只取决于几个变量,如带宽,图像大小或您自己的耐心。你需要自己衡量这一点才能做到正确。

执行异步请求不会提高下载速度,但用户体验方式会更好。说真的,你应该考虑为任何需要超过一秒钟的下载做这件事。

我始终建议您使用ASIHTTPRequest,这样可以轻松实现queuesprogress bars等内容。

以下是使用该库的异步请求中最简单的示例:

- (IBAction)grabURLInBackground:(id)sender
{
   NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
   ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
   [request setDelegate:self];
   [request startAsynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
   // Use when fetching text data
   NSString *responseString = [request responseString];

   // Use when fetching binary data
   NSData *responseData = [request responseData];
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
   NSError *error = [request error];
}

更新:将不再支持此库。来自1

  

“请注意,我不再在这个图书馆工作 - 你可以   我想考虑为新项目使用其他东西。 :)“

现在我在大多数项目中使用AFNetworking