[swift] SDWebImage를 사용하여 이미지 다운로드 중에 다른 작업을 실행하는 방법은 무엇인가요?
import UIKit
import SDWebImage

class ViewController: UIViewController {
    
    @IBOutlet weak var imageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 이미지 다운로드 URL
        let imageUrl = URL(string: "https://example.com/image.jpg")!
        
        // 이미지 다운로드
        SDWebImageDownloader.shared.downloadImage(with: imageUrl, options: [], progress: nil) { [weak self] (image, _, _, _) in
            // 다운로드가 완료되면 백그라운드에서 작업 실행
            DispatchQueue.global().async {
                // 다운로드된 이미지를 이용한 작업 예시
                if let image = image {
                    // 이미지 필터링
                    let filteredImage = self?.applyFilter(to: image)
                    
                    // 메인 스레드에서 UI 업데이트
                    DispatchQueue.main.async {
                        self?.imageView.image = filteredImage
                    }
                }
            }
        }
    }
    
    func applyFilter(to image: UIImage) -> UIImage {
        // 이미지 필터링 작업을 수행하는 코드를 작성합니다.
        // 예시로 간단한 회전 필터를 적용합니다.
        let rotatedImage = image.withRenderingMode(.alwaysOriginal).rotate(by: 45)
        
        return rotatedImage
    }
    
}

// 회전 필터 메소드 추가 예시
extension UIImage {
    func rotate(by degrees: CGFloat) -> UIImage {
        let radians = degrees * CGFloat.pi / 180.0
        let rotatedSize = CGRect(origin: .zero, size: size).applying(CGAffineTransform(rotationAngle: radians)).size

        UIGraphicsBeginImageContext(rotatedSize)
        if let context = UIGraphicsGetCurrentContext() {
            context.translateBy(x: rotatedSize.width / 2, y: rotatedSize.height / 2)
            context.rotate(by: radians)
            draw(in: CGRect(origin: CGPoint(x: -size.width / 2, y: -size.height / 2), size: size))
            
            let rotatedImage = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()

            return rotatedImage ?? self
        }

        return self
    }
}

위의 코드 예제에서는 SDWebImageDownloader를 사용하여 이미지를 다운로드합니다. 다운로드가 완료되면 백그라운드에서 작업을 수행하기 위해 GCD를 사용합니다. 다운로드된 이미지를 이용하여 applyFilter 메소드를 호출하여 필터링 작업을 수행하고, 메인 스레드에서 UI를 업데이트합니다.

이렇게 함으로써 SDWebImage를 사용하여 이미지 다운로드 중에 다른 작업을 실행할 수 있습니다.