оптимизация нескольких загрузок асинхронных изображений в iOS - PullRequest
1 голос
/ 03 марта 2011

Я хочу скачать много картинок с сервера.Как я могу сделать это как можно быстрее?В настоящее время я использую:

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

Это мучительно медленно.Есть ли увеличение скорости загрузки нескольких изображений одновременно (асинхронно), и если да, то сколько их слишком много?

1 Ответ

2 голосов
/ 03 марта 2011

Вы не получите однозначного ответа на оптимальное количество соединений, потому что их нет.Это зависит только от нескольких переменных, таких как пропускная способность, размер изображения или ваше собственное терпение.Вы должны измерить это самостоятельно, чтобы сделать это правильно.

Выполнение асинхронных запросов не увеличит скорость загрузки, но пользовательский опыт будет в порядке лучше.Серьезно, вы должны подумать о том, чтобы делать это для любой загрузки, которая занимает больше секунды.

Я всегда рекомендую использовать ASIHTTPRequest , это делает реализацию таких вещей, как queues и индикаторы выполнения easy.

Вот простейший пример асинхронного запроса с использованием библиотеки:

- (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];
}

Обновление: Эта библиотека больше не будетподдерживается.From 1 :

"Обратите внимание, что я больше не работаю над этой библиотекой - возможно, вы захотите использовать что-то еще для новых проектов. :)"

В настоящее время я использую AFNetworking для большинства своих проектов.

...