Я лично использую встроенную функцию Grand Central Dispatch в iOS для асинхронного скачивания изображений с сервера.
Ниже приведен код, который я использовал для загрузки фотографий с Flickr в одном из моих приложений.
В вашем изображение/фото класс, есть функция, которая является чем-то вроде этого:
- (void)processImageDataWithBlock:(void (^)(NSData *imageData))processImage
{
NSString *url = self.imageURL;
dispatch_queue_t callerQueue = dispatch_get_current_queue();
dispatch_queue_t downloadQueue = dispatch_queue_create("Photo Downloader", NULL);
dispatch_async(downloadQueue, ^{
NSData *imageData = *insert code that fetches photo from server*;
dispatch_async(callerQueue, ^{
processImage(imageData);
});
});
dispatch_release(downloadQueue);
}
В вашем фото View Controller, вы можете вызвать эту функцию следующим образом:
- (void)viewWillAppear:(BOOL)animated
{
[spinner startAnimating];
[self.photo processImageDataWithBlock:^(NSData *imageData) {
if (self.view.window) {
UIImage *image = [UIImage imageWithData:imageData];
imageView.image = image;
imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height);
scrollView.contentSize = image.size;
[spinner stopAnimating];
}
}];
}
пожалуйста отправьте свой журнал сбоев, если это возможно. –
Пожалуйста, взгляните на мой ответ. Библиотека, которую я предлагал, отлично работает. Дайте мне знать, если вы не получите, как реализовать. –
Если проблема еще не решена. Использование JImage.h и JImage.m поможет вам в любом состоянии, которое я опубликовал, вам просто нужно скопировать и вставить, что будет работать автоматически. Это очень эффективные классы, которые я реализовал и работал очень хорошо для меня при ленивой загрузке изображений (загрузка async) – Kuldeep