UIImage 메모리 resize

apwierk·2024년 2월 2일
0

오류 해결

목록 보기
6/9

우선 간단히 이미지를 여러 개 보여주는 테이블 뷰를 구현했다.

아주 간단한 뷰라서 문제 없겠거니 넘어갔는데...

해당 뷰만 들어오면 메모리가 아주 상당하게 올라가는 문제가 발생했다.

위 사진 처럼 4배 가까이 메모리가 커지는 문제가 발생됐다.

처음에는 테이블 뷰 delegate 문제인가.. 클로저 캡쳐 문제인가.. 봤는데

아주 간단한 테이블 뷰여서 문제가 발생할만한 부분이 있지 않았다.

cellForLowAt에 이미지 지정하는 부분을 주석 처리했더니 메모리가 올라가지 않았다.

시간을 더 투자해서 알아보니 해당 뷰의 이미지들만 용량이 매우 큰 것으로 확인했다.

그래서 이미지의 용량을 줄이기 위해 resize을 하도록했다.

extension UIImage {
    func resize(to size: CGSize) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
        defer { UIGraphicsEndImageContext() }
        draw(in: CGRect(origin: .zero, size: size))
        return UIGraphicsGetImageFromCurrentImageContext() ?? self
    }
}

그랬더니 완벽하게 해결..!

메모리 릭 원인을 모를 때 꼭 이미지 용량을 한 번 확인해보시길 바랍니다. !!

profile
iOS 꿈나무 개발자

0개의 댓글