From 7a1778a10006860e30506f1e69bbbc1b84cdda08 Mon Sep 17 00:00:00 2001 From: JunYoung Date: Wed, 21 May 2025 18:16:31 +0900 Subject: [PATCH] =?UTF-8?q?fix/#138:=20=EC=93=B0=EB=A0=88=EB=93=9C=20?= =?UTF-8?q?=EC=8A=A4=EC=9C=84=EC=B9=AD=EC=9D=B4=20=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=EC=97=90=EB=A7=8C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extension/UIImageView+.swift | 31 +++++-------------- .../ImageLoader/ImageLoader.swift | 8 +++-- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/Poppool/CoreLayer/Infrastructure/Infrastructure/Extension/UIImageView+.swift b/Poppool/CoreLayer/Infrastructure/Infrastructure/Extension/UIImageView+.swift index b1c65770..651ebfde 100644 --- a/Poppool/CoreLayer/Infrastructure/Infrastructure/Extension/UIImageView+.swift +++ b/Poppool/CoreLayer/Infrastructure/Infrastructure/Extension/UIImageView+.swift @@ -55,33 +55,16 @@ public extension UIImageView { // 현재 이미지 URL을 업데이트 currentImageURL = encodedURL - // 먼저 메모리 캐시 확인 - if let cachedImage = MemoryStorage.shared.fetchImage(url: encodedURL) { - self.image = cachedImage - completion?() - return - } - - // 다음으로 디스크 캐시 확인 - if let diskImage = DiskStorage.shared.fetchImage(url: encodedURL) { - MemoryStorage.shared.store(image: diskImage, url: encodedURL) - self.image = diskImage - completion?() - return - } - ImageLoader.shared.loadImage(with: encodedURL, defaultImage: placeholderImage, imageQuality: .origin) { [weak self] image in guard let self else { return } defer { completion?() } - DispatchQueue.main.async { - // 현재 요청 ID와 캡처된 ID가 일치하는지 확인 (다른 이미지로 변경되었으면 무시) - if self.currentImageURL == encodedURL { - if let image = image { - self.image = image - } else if self.image == nil { - // 이미지 로드 실패 시 기본 이미지 표시 - self.image = self.placeholderImage - } + // 현재 요청 ID와 캡처된 ID가 일치하는지 확인 (다른 이미지로 변경되었으면 무시) + if self.currentImageURL == encodedURL { + if let image = image { + self.image = image + } else if self.image == nil { + // 이미지 로드 실패 시 기본 이미지 표시 + self.image = self.placeholderImage } } } diff --git a/Poppool/CoreLayer/Infrastructure/Infrastructure/ImageLoader/ImageLoader.swift b/Poppool/CoreLayer/Infrastructure/Infrastructure/ImageLoader/ImageLoader.swift index efaecd9d..203d009b 100644 --- a/Poppool/CoreLayer/Infrastructure/Infrastructure/ImageLoader/ImageLoader.swift +++ b/Poppool/CoreLayer/Infrastructure/Infrastructure/ImageLoader/ImageLoader.swift @@ -98,12 +98,14 @@ private extension ImageLoader { if let data = data, let image = UIImage(data: data) { MemoryStorage.shared.store(image: image, url: stringURL) DiskStorage.shared.store(image: image, url: stringURL) - completion(.success(image)) + DispatchQueue.main.async { completion(.success(image)) } } else { - completion(.failure(ImageLoaderError.convertError(description: "Failed to convert data to UIImage"))) + DispatchQueue.main.async { + completion(.failure(ImageLoaderError.convertError(description: "Failed to convert data to UIImage"))) + } } case .failure(let error): - completion(.failure(error)) + DispatchQueue.main.async { completion(.failure(error)) } } } }