모바일 개발 · 기초
Swift의 `Protocol`이 무엇이며, 어떤 상황에서 유용하게 사용될 수 있는지 구체적인 예를 들어 설명해주세요.
힌트 · `Protocol`은 특정 기능이나 속성을 정의하는 청사진입니다. 여러 타입이 공통된 기능을 구현하도록 강제하거나, 타입 간의 의존성을 줄이는 데 사용됩니다.
추상화다형성유연성DelegateMixins
모범답안
Swift의 Protocol은 특정 역할을 수행하기 위한 메서드, 프로퍼티 등의 요구사항을 정의하는 일종의 '청사진'입니다. 클래스, 구조체, 열거형 등 어떤 타입이든 이 프로토콜을 채택(adopt)해서 해당 요구사항을 실제로 구현할 수 있습니다.
Protocol이 유용한 상황은 크게 세 가지로 볼 수 있습니다. 첫째, 추상화를 통해 코드의 유연성을 높일 수 있습니다. 예를 들어, Drawable이라는 프로토콜을 정의하고, Rectangle, Circle 클래스가 이를 채택하면, Drawable 타입의 배열에 이 객체들을 함께 담아 관리할 수 있습니다.
둘째, 다형성을 구현할 수 있습니다. 여러 타입이 동일한 프로토콜을 채택함으로써, 동일한 방식으로 동작하도록 만들 수 있습니다.
셋째, Delegate 패턴 구현에 활용됩니다. 특정 이벤트 발생 시 다른 객체에게 알림을 보내는 데 사용되어, 객체 간의 결합도를 낮추고 유연성을 확보할 수 있습니다. 예를 들어, UITableViewDelegate 프로토콜을 통해 테이블 뷰의 이벤트 처리를 위임하는 것이 대표적인 예시입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 iOS / Swift 면접 질문
- Swift의 Optional이 무엇이며, 왜 필요한지 설명해주세요. 또한, Optional 값을 안전하게 언래핑하는 기본적인 방법 두 가지를 설명해주세요.
- Swift에서 `Struct`와 `Class`의 주요 차이점은 무엇인가요? 값 타입(Value Type)과 참조 타입(Reference Type)의 관점에서 설명해주세요.
- iOS 앱 개발에서 `Delegate` 패턴은 어떤 목적으로 사용되며, 어떻게 구현하는지 기본적인 원리를 설명해주세요.
- Swift의 `Extension`이 무엇이며, 기존 클래스, 구조체, 열거형 또는 프로토콜에 어떤 기능을 추가할 수 있는지 설명해주세요.
- Swift의 `Enum` (열거형)은 무엇이며, 원시 값(Raw Value)과 연관 값(Associated Value)의 차이점을 설명하고 각각의 사용 예를 들어주세요.
- iOS 앱 개발 시 ARC(Automatic Reference Counting)가 어떻게 동작하는지 설명하고, 강한 참조 순환(Retain Cycle)이 발생하는 대표적인 상황과 이를 해결하는 방법에 대해 구체적인 코드 예시 없이 개념적으로 설명해주세요.