2011-03-03 84 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對於大多數我的項目。