Swift의 `Enum` (열거형)은 무엇이며, 원시 값(Raw Value)과 연관 값(Associated Value)의 차이점을 설명하고 각각의 사용 예를 들어주세요.
힌트 · `Enum`은 관련된 값들을 그룹화하는 타입입니다. `Raw Value`는 각 케이스에 고정된 값을 할당하고, `Associated Value`는 각 케이스와 함께 추가적인 데이터를 저장할 수 있습니다.
모범답안
Swift의 Enum은 관련된 값들을 그룹화하여 타입 안전성을 높이는 데 사용되는 타입입니다. 예를 들어, 요일을 표현하는 Enum을 만들 수 있습니다.
원시 값(Raw Value)은 Enum 케이스에 미리 정의된 고정된 값입니다. 예를 들어, enum Weekday: String { case monday = "Mon", tuesday = "Tue" } 처럼 각 요일에 해당하는 문자열을 할당할 수 있습니다. Weekday.monday.rawValue는 "Mon"을 반환합니다.
연관 값(Associated Value)은 Enum 케이스와 함께 추가적인 정보를 저장할 수 있게 해줍니다. 예를 들어, enum Result { case success(String), failure(Error) } 처럼 성공 시 문자열 메시지, 실패 시 에러 객체를 함께 저장할 수 있습니다. 연관 값은 패턴 매칭을 통해 접근할 수 있습니다. switch result { case .success(let message): print(message) ... } 와 같이 사용할 수 있습니다. 원시 값은 모든 케이스에 동일한 타입의 값을 할당해야 하지만, 연관 값은 각 케이스마다 다른 타입의 값을 가질 수 있다는 차이점이 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 iOS / Swift 면접 질문
- iOS 앱 개발에서 `Delegate` 패턴은 어떤 목적으로 사용되며, 어떻게 구현하는지 기본적인 원리를 설명해주세요.
- Swift의 `Protocol`이 무엇이며, 어떤 상황에서 유용하게 사용될 수 있는지 구체적인 예를 들어 설명해주세요.
- Swift의 `Extension`이 무엇이며, 기존 클래스, 구조체, 열거형 또는 프로토콜에 어떤 기능을 추가할 수 있는지 설명해주세요.
- iOS 앱 개발 시 ARC(Automatic Reference Counting)가 어떻게 동작하는지 설명하고, 강한 참조 순환(Retain Cycle)이 발생하는 대표적인 상황과 이를 해결하는 방법에 대해 구체적인 코드 예시 없이 개념적으로 설명해주세요.
- Swift에서 구조체(Struct)와 클래스(Class)의 주요 차이점을 메모리 관리 및 데이터 전달 관점에서 설명하고, 각각 어떤 상황에서 사용하는 것이 적절한지 구체적인 사용 사례와 함께 비교하여 설명해주세요.
- iOS 앱에서 비동기 작업을 처리하기 위해 GCD(Grand Central Dispatch)를 사용하는 경우, `DispatchQueue.main.async`와 `DispatchQueue.global().async`의 차이점을 설명하고, 각각 어떤 용도로 사용되는지 예시를 들어 설명해주세요.