패스잇
모바일 개발 · 심화

복잡한 커스텀 UICollectionView 또는 UITableView에서 셀 스크롤 성능 저하가 발생했을 때, 이를 진단하고 최적화하기 위한 고급 기법들을 설명하시오. 특히 오프스크린 렌더링, 레이아웃 계산, 이미지 로딩 관점에서 접근하시오.

힌트 · draw(_:) 메서드의 최적화, 비동기 이미지 로딩 및 캐싱, 셀의 레이아웃 계산을 미리 수행하는 Pre-fetching, CALayer의 rasterization 속성을 고려합니다.

오프스크린 렌더링레이아웃 캐싱비동기 이미지 로딩reuseIdentifiercontentOffset

모범답안

네, UICollectionView나 UITableView에서 셀 스크롤 성능 저하가 발생했을 때, 저는 다음과 같은 방법들을 사용해서 진단하고 최적화합니다.

먼저 Instruments를 사용해서 병목 지점을 찾습니다. CPU 사용량, 메모리 할당, Core Animation FPS 등을 집중적으로 봅니다.

오프스크린 렌더링은 성능에 큰 영향을 줄 수 있습니다. 불필요한 그림자나 마스크는 피하고, 필요한 경우 shouldRasterize를 사용해서 캐싱합니다. 하지만 남용하면 오히려 성능이 저하될 수 있으므로 주의해야 합니다.

레이아웃 계산은 가능한 한 미리 수행합니다. prefetchingDataSource를 사용해서 화면에 나타나기 전에 셀의 레이아웃을 계산해두면 스크롤 성능을 향상시킬 수 있습니다.

이미지 로딩은 비동기적으로 처리하고, 메모리 및 디스크 캐싱을 활용합니다. SDWebImage나 Kingfisher 같은 라이브러리를 사용하면 편리합니다.

마지막으로, 셀의 reuseIdentifier를 제대로 사용하고 있는지 확인합니다. 재사용 메커니즘을 효율적으로 활용하면 불필요한 객체 생성을 줄일 수 있습니다. draw(_:) 메서드를 직접 구현해야 한다면 최대한 효율적으로 작성해야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 iOS / Swift 면접 질문

← iOS / Swift 면접 질문 전체 보기