모바일 개발 · 기초
Swift의 `Extension`이 무엇이며, 기존 클래스, 구조체, 열거형 또는 프로토콜에 어떤 기능을 추가할 수 있는지 설명해주세요.
힌트 · `Extension`은 기존 타입에 새로운 기능을 추가할 수 있게 해주지만, 저장 프로퍼티는 추가할 수 없습니다. 메서드, 계산 프로퍼티, 이니셜라이저 등을 추가할 수 있습니다.
기존 타입 확장기능 추가연산 프로퍼티메서드 추가이니셜라이저
모범답안
Swift의 Extension은 기존에 존재하는 클래스, 구조체, 열거형, 또는 프로토콜에 새로운 기능을 추가할 수 있는 기능입니다. 쉽게 말해, 이미 정의된 타입에 코드를 수정하지 않고도 기능을 확장할 수 있게 해줍니다.
Extension을 통해 추가할 수 있는 기능으로는 메서드, 계산 프로퍼티, 새로운 이니셜라이저, 서브스크립트, 그리고 특정 프로토콜을 준수하도록 하는 기능 등이 있습니다.
다만, Extension으로는 저장 프로퍼티를 추가할 수는 없습니다. 기존 타입의 메모리 구조를 변경하는 것은 불가능하기 때문입니다. 예를 들어, String 타입에 문자열의 길이를 반환하는 계산 프로퍼티를 추가하거나, 특정 포맷으로 날짜를 출력하는 메서드를 추가하는 데 사용할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 iOS / Swift 면접 질문
- Swift에서 `Struct`와 `Class`의 주요 차이점은 무엇인가요? 값 타입(Value Type)과 참조 타입(Reference Type)의 관점에서 설명해주세요.
- iOS 앱 개발에서 `Delegate` 패턴은 어떤 목적으로 사용되며, 어떻게 구현하는지 기본적인 원리를 설명해주세요.
- Swift의 `Protocol`이 무엇이며, 어떤 상황에서 유용하게 사용될 수 있는지 구체적인 예를 들어 설명해주세요.
- Swift의 `Enum` (열거형)은 무엇이며, 원시 값(Raw Value)과 연관 값(Associated Value)의 차이점을 설명하고 각각의 사용 예를 들어주세요.
- iOS 앱 개발 시 ARC(Automatic Reference Counting)가 어떻게 동작하는지 설명하고, 강한 참조 순환(Retain Cycle)이 발생하는 대표적인 상황과 이를 해결하는 방법에 대해 구체적인 코드 예시 없이 개념적으로 설명해주세요.
- Swift에서 구조체(Struct)와 클래스(Class)의 주요 차이점을 메모리 관리 및 데이터 전달 관점에서 설명하고, 각각 어떤 상황에서 사용하는 것이 적절한지 구체적인 사용 사례와 함께 비교하여 설명해주세요.