Ich persönlich verwende die in iOS integrierte Funktion Grand Central Dispatch, um Bilder asynchron vom Server herunterzuladen.
Nachfolgend finden Sie einen Code, mit dem ich in einer meiner Anwendungen Fotos von Flickr abgerufen habe.
Erstellen Sie in Ihrer Bild-/Fotoklasse eine Funktion, die in etwa so aussieht:
- (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);
}
In Ihrem Photo View Controller können Sie diese Funktion wie folgt aufrufen:
- (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];
}
}];
}