我有一个应用程序,每个屏幕都需要从 REST API 加载一些图像(甚至可能是 50 个)和一些 JSON。问题是用户可以在所有图像加载之前更改屏幕,并且当新屏幕出现时他们会继续下载,这很糟糕。
我的最终目标是能够在屏幕更改时取消所有活动下载。即使图像还没有完成下载。
有一个队列同时下载不超过 5 张图像也很好。这是我现在下载图像的方式:
// global queue
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[self.data objectForKey:@"image_url"]]];
self.image = [UIImage imageWithData:imageData];
dispatch_async(dispatch_get_main_queue(), ^{
[[DataManager sharedManager] storeImageData:self.image forImageWithID:self.imageID];
[self.delegate downloadedImage:self];
});