papercode
개발일지/앱(iOS·macOS) 직접 작성

SwiftUI 사진 선택기에서 메모리가 튀는 문제

읽는 데 1분

사진 수백 장을 한꺼번에 고르면 메모리가 순간적으로 1GB를 넘었다. 원인은 원본 데이터를 전부 Data로 들고 있던 것이다.

고친 방법#

swift
for item in selection {
    guard let url = try await item.loadTransferable(type: URL.self) else { continue }
    try await uploader.enqueue(fileURL: url) // 파일 경로만 넘긴다
}
  • 원본을 메모리에 올리지 않고 파일 경로로 넘긴다
  • 썸네일은 CGImageSourceCreateThumbnailAtIndex로 만든다
  • 업로드는 한 번에 3개씩
papercode