// SDWebImage (ObjC)
[imageView sd_setImageWithURL:[NSURL URLWithString:url]
placeholderImage:[UIImage imageNamed:@"placeholder"]];
// Kingfisher (Swift)
imageView.kf.setImage(with: URL(string: url), placeholder: UIImage(named: "placeholder"))
這些庫自動處理:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
for (NSString *urlString in urlArray) {
dispatch_group_enter(group);
dispatch_async(queue, ^{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
dispatch_async(dispatch_get_main_queue(), ^{
if (data) {
UIImage *img = [UIImage imageWithData:data];
// 保存文件、更新 UI
}
dispatch_group_leave(group);
});
});
}
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@"全部下載完成");
});