2013-06-12 3 views
0

Код ниже успешно загружен из ссылки и хранится в моем каталоге кеша. Но я хочу получить много (как 100) изображений с разных URL-адресов (но на одном и том же сайте отличается только имя файла). Это отлично подходит для получения этих изображений, но мне нужно долго ждать. есть все равно, чтобы получить изображения легко и сделать мое реагирование время действительно быстрее.Сохранение изображений с URL-адреса занимает долгое время

NSString *UCIDLink = [NSString stringWithFormat:@"http://www.example.com/picture.png]; 
    NSURL * imageURL = [NSURL URLWithString:UCIDLink]; 
    NSData * imageData = [NSData dataWithContentsOfURL:imageURL]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"picture.png"]];  

    NSError *writeError = nil; 
    [imageData writeToFile:filePath options:NSDataWritingAtomic error:&writeError]; 
    if (writeError) { 
     NSLog(@"Success"); 
    }else{ 
     NSLog(@"Failed"); 
    } 

ghgh

+0

Точка борющийся, скорее всего, полоса. Таким образом, все, что улучшает вашу ленту, ускорит процесс. Это не связано с вашим кодом. –

+1

Сколько загрузок вы используете одновременно? – Wain

+0

@Bartdude Спасибо, я получил высокоскоростное соединение, и я уверен, что эта же концепция реализована в Android, и она работает очень быстро. – dinesh

ответ

0

Использование многопоточности для того, чтобы сделать ряд изображения извлекает происходят одновременно. Таким образом, вы можете значительно сократить время ожидания.

1

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

использование ниже код:

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); 
     dispatch_async(q, ^{ 
      /* Fetch the image from the server... */ 
      NSData *data = [NSData dataWithContentsOfURL:url]; 
      UIImage *img = [[UIImage alloc] initWithData:data]; 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       /* This is the main thread again, where we set the tableView's image to 
       be what we just fetched. */ 
       cell.imgview.image = img; 
      }); 
     }); 

или вы можете использовать:

AsyncImageView *asyncImageView = [[AsyncImageView alloc]initWithFrame:CGRectMake(30,32,100, 100)]; 
[asyncImageView loadImageFromURL:[NSURL URLWithString:your url]]; 
[YourImageView addSubview:asyncImageView]; 
[asyncImageView release]; 

Скачать файлы здесь ..... https://github.com/nicklockwood/AsyncImageView

Смежные вопросы