모바일 개발 · 기초
iOS 앱 개발에서 `Delegate` 패턴은 어떤 목적으로 사용되며, 어떻게 구현하는지 기본적인 원리를 설명해주세요.
힌트 · `Delegate` 패턴은 객체 간의 약한 결합을 통해 특정 이벤트를 다른 객체에게 위임하여 처리하도록 하는 디자인 패턴입니다. 프로토콜을 활용합니다.
객체 간 통신느슨한 결합프로토콜메서드 호출위임
모범답안
Delegate 패턴은 iOS 앱 개발에서 객체 간의 통신을 위해 사용되는 디자인 패턴입니다. 핵심은 한 객체가 특정 이벤트나 작업을 다른 객체에게 "위임"하는 것입니다.
구현 원리는 다음과 같습니다. 먼저, 프로토콜을 정의합니다. 이 프로토콜은 위임받는 객체(delegate)가 구현해야 할 메서드들을 선언합니다. 위임하는 객체는 이 프로토콜 타입의 프로퍼티를 가지고, 필요할 때 delegate 프로퍼티에 할당된 객체의 메서드를 호출합니다.
이렇게 하면 위임하는 객체는 위임받는 객체의 구체적인 타입에 의존하지 않고, 프로토콜에 정의된 메서드만 호출하면 되므로 느슨한 결합을 유지할 수 있습니다. 예를 들어, UITableView는 UITableViewDelegate 프로토콜을 통해 테이블 뷰의 동작을 컨트롤러에게 위임합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 iOS / Swift 면접 질문
- Swift에서 `var`와 `let`의 차이점을 설명하고, 각각 어떤 경우에 사용하는 것이 적절한지 예시와 함께 설명해주세요.
- Swift의 Optional이 무엇이며, 왜 필요한지 설명해주세요. 또한, Optional 값을 안전하게 언래핑하는 기본적인 방법 두 가지를 설명해주세요.
- Swift에서 `Struct`와 `Class`의 주요 차이점은 무엇인가요? 값 타입(Value Type)과 참조 타입(Reference Type)의 관점에서 설명해주세요.
- Swift의 `Protocol`이 무엇이며, 어떤 상황에서 유용하게 사용될 수 있는지 구체적인 예를 들어 설명해주세요.
- Swift의 `Extension`이 무엇이며, 기존 클래스, 구조체, 열거형 또는 프로토콜에 어떤 기능을 추가할 수 있는지 설명해주세요.
- Swift의 `Enum` (열거형)은 무엇이며, 원시 값(Raw Value)과 연관 값(Associated Value)의 차이점을 설명하고 각각의 사용 예를 들어주세요.