패스잇
모바일 개발 · 심화

대규모 iOS 애플리케이션에서 복잡한 뷰 계층과 데이터 모델 간의 메모리 누수를 진단하고 해결하기 위한 심층적인 전략을 설명하고, Instruments 도구 중 어떤 것을 주로 활용할 것인지 구체적인 시나리오와 함께 제시하시오.

힌트 · Allocations 및 Leaks 도구를 사용하여 참조 그래프를 분석하고, 클로저의 캡처 리스트와 델리게이트 패턴에서의 약한 참조 사용을 검토합니다.

InstrumentsLeaksRetain CycleARC (Automatic Reference Counting)Weak Reference

모범답안

네, 안녕하세요. 대규모 iOS 앱에서 메모리 누수를 진단하고 해결하는 것은 성능과 안정성에 매우 중요합니다. 복잡한 뷰 계층과 데이터 모델 간의 누수는 특히 까다롭죠.

우선, Instruments의 Allocations 도구를 사용하여 메모리 사용량을 추적합니다. 특정 객체가 예상보다 오래 살아있는지 확인하고, Retain Count를 분석하여 어떤 객체가 강한 참조를 유지하는지 파악합니다. Leaks 도구는 누수되는 객체를 직접적으로 보여주기 때문에 초기 진단에 유용합니다.

예를 들어, 사용자 프로필 뷰 컨트롤러가 데이터를 가져오는 동안 메모리 누수가 발생한다고 가정해 보겠습니다. Leaks 도구에서 해당 뷰 컨트롤러가 누수되는 것을 확인했다면, Allocations 도구로 이동하여 해당 객체의 참조 그래프를 조사합니다. 클로저 내에서 self를 캡처할 때 [weak self]를 사용하지 않았거나, 델리게이트 패턴에서 weak 참조를 사용하지 않아 Retain Cycle이 발생하는 경우가 흔합니다.

// 예시: Retain Cycle 발생 가능성이 있는 코드
myObject.completionHandler = { [self] result in
    self.updateUI(with: result) // self에 강한 참조 발생
}

이러한 부분을 집중적으로 검토하고, 필요하다면 weak 또는 unowned를 사용하여 참조를 끊어 메모리 누수를 해결합니다.

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

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

함께 보는 iOS / Swift 면접 질문

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