Я ИТ специалист или Жизнь ИТшника Это блог о моей работе, жизни и увлечениях! Решим ИТ проблемы вместе!

1Июл/130

Objective-C: загрузка картинки через http в UIImageView

В моем списке есть еще один пунктик - как в Objective-C загрузить картинку через http в UIImageView.

Код очень простой.

На view лежит UIImageView - c именем imageView. Там же кнопка с таком вот кодом:

- (IBAction)actBtnGet:(id)sender {
id path = @"http://www.denaie.ru/wp-content/uploads/2013/06/06_produmai_marshrut-300x262.jpg";
NSURL *url = [NSURL URLWithString:path];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];
self.imageView.image=img;
}

Картинка грузится и отображается. Задача выполнена.

Там же в этом отделе был подвопрос что такое синхронная и асинхронная загрузка. Так вот, точной терминологии нет равно как и не понятно к чему применим сам вопрос. Самое просто это то что в первом случае все идет по порядку и второй файл заливается/скачивается после окончания первого, а во втором это может происходить одновременно. И как правило для этого используется либо многопоточность либо какая-то программная прослойка работающая в фоне и выполняющая роль менеджера загрузок и ей делегируется данная обязанность. Например
Grand Central Dispatch (GCD)

Вот такой вот код найденный в интернете иллюстрирует использование GCD:

+ (void)processImageDataWithURLString:(NSString *)urlString andBlock:(void (^)(NSData *imageData))processImage { NSURL *url = [NSURL URLWithString:urlString];

dispatch_queue_t callerQueue = dispatch_get_current_queue();
dispatch_queue_t downloadQueue = dispatch_queue_create("com.myapp.processsmagequeue", NULL);
dispatch_async(downloadQueue, ^{
NSData * imageData = [NSData dataWithContentsOfURL:url];

dispatch_async(callerQueue, ^{
processImage(imageData);
});
});
dispatch_release(downloadQueue);
}

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.