diff --git a/Multi-threading_Practice/GCD.swift b/Multi-threading_Practice/GCD.swift new file mode 100644 index 0000000000000000000000000000000000000000..d3187034520758e45b538591d79020d590c24e7a --- /dev/null +++ b/Multi-threading_Practice/GCD.swift @@ -0,0 +1,85 @@ +// +// GCD.swift +// FOSS_PR +// +// Created by 김사랑 on 2024/06/23. +// + +//import UIKit +// +//let catAPIURL = "https://api.thecatapi.com/v1/images/search?limit=3" +// +//extension ViewController { +// +// func downloadImagesUsingGCD() { +// guard let url = URL(string: catAPIURL) else { return } +// +// DispatchQueue.global().async { +// do { +// let data = try Data(contentsOf: url) +// if let jsonArray = try JSONSerialization.jsonObject(with: data, options:[]) as? [[String: Any]] { +// var downloadedImages: [UIImage] = [] +// let dispatchGroup = DispatchGroup() +// for json in jsonArray { +// if let imagesUrlString = json["url"] as? String, +// let imageUrl = URL(string: imagesUrlString) { +// dispatchGroup.enter() +// +// DispatchQueue.global().async { +// if let imageData = try? Data(contentsOf: imageUrl), +// let image = UIImage(data: imageData) { +// downloadedImages.append(image) +// } +// dispatchGroup.leave() +// } +// } +// } +// +// dispatchGroup.notify(queue: .main) { +// self.originalImgaes = downloadedImages +// self.images = downloadedImages +// self.collectionView.reloadData() +// } +// } +// } catch { +// DispatchQueue.main.async { +// let alert = UIAlertController(title: "Error", message: "Failed to load images", preferredStyle: .alert) +// alert.addAction(UIAlertAction(title: "OK", style: .default)) +// self.present(alert, animated: true) +// } +// } +// } +// } +// +// func applyFilterUsingGCD() { +// DispatchQueue.global().async { +// var filteredImages: [UIImage] = [] +// for image in self.originalImgaes { +// let filteredImage = self.applyFilter(to: image) +// filteredImages.append(filteredImage) +// } +// DispatchQueue.main.async { +// self.images = filteredImages +// self.collectionView.reloadData() +// } +// } +// } +// +// func resetImagesUsingGCD() { +// DispatchQueue.main.async { +// self.images = self.originalImgaes +// self.collectionView.reloadData() +// } +// } +// +// func applyFilter(to image: UIImage) -> UIImage { +// let context = CIContext() +// let filter = CIFilter(name: "CIPhotoEffectNoir") +// filter?.setValue(CIImage(image: image), forKey: kCIInputImageKey) +// if let outputImage = filter?.outputImage, +// let cgImage = context.createCGImage(outputImage, from: outputImage.extent) { +// return UIImage(cgImage: cgImage) +// } +// return image +// } +//}