패스잇
모바일 개발 · 기초

Swift의 `Protocol`이 무엇이며, 어떤 상황에서 유용하게 사용될 수 있는지 구체적인 예를 들어 설명해주세요.

힌트 · `Protocol`은 특정 기능이나 속성을 정의하는 청사진입니다. 여러 타입이 공통된 기능을 구현하도록 강제하거나, 타입 간의 의존성을 줄이는 데 사용됩니다.

추상화다형성유연성DelegateMixins

모범답안

Swift의 Protocol은 특정 역할을 수행하기 위한 메서드, 프로퍼티 등의 요구사항을 정의하는 일종의 '청사진'입니다. 클래스, 구조체, 열거형 등 어떤 타입이든 이 프로토콜을 채택(adopt)해서 해당 요구사항을 실제로 구현할 수 있습니다.

Protocol이 유용한 상황은 크게 세 가지로 볼 수 있습니다. 첫째, 추상화를 통해 코드의 유연성을 높일 수 있습니다. 예를 들어, Drawable이라는 프로토콜을 정의하고, Rectangle, Circle 클래스가 이를 채택하면, Drawable 타입의 배열에 이 객체들을 함께 담아 관리할 수 있습니다.

둘째, 다형성을 구현할 수 있습니다. 여러 타입이 동일한 프로토콜을 채택함으로써, 동일한 방식으로 동작하도록 만들 수 있습니다.

셋째, Delegate 패턴 구현에 활용됩니다. 특정 이벤트 발생 시 다른 객체에게 알림을 보내는 데 사용되어, 객체 간의 결합도를 낮추고 유연성을 확보할 수 있습니다. 예를 들어, UITableViewDelegate 프로토콜을 통해 테이블 뷰의 이벤트 처리를 위임하는 것이 대표적인 예시입니다.

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

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

함께 보는 iOS / Swift 면접 질문

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