В моем списке есть еще один пунктик — как в 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-300×262.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);
}
Комментариев нет