2011-03-03 62 views
1

我想从服务器下载大量图片。我怎样才能尽快做到这一点?目前我正在使用:优化iOS中的多个异步图像下载

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

这是痛苦的缓慢。在同时(异步)下载多个图像时是否有任何提高速度,如果有的话,有多少是太多?

+0

有几个选项。你可以分离线程来做下载 - 这可能会让你的速度最快。 – 2011-03-03 04:06:43

+0

感谢您的评论,但这不是我问的。我知道我可以分离线程,但我想知道是否有人知道并发URLConnection的最佳数量。 – 2011-03-03 05:57:21

回答

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对于大多数我的项目。