모바일 개발 · 기초
Swift에서 `Struct`와 `Class`의 주요 차이점은 무엇인가요? 값 타입(Value Type)과 참조 타입(Reference Type)의 관점에서 설명해주세요.
힌트 · `Struct`는 값 타입으로 복사 시 새로운 인스턴스가 생성되고, `Class`는 참조 타입으로 참조를 공유합니다. 상속은 `Class`만 가능합니다.
값 타입참조 타입스택 메모리힙 메모리상속
모범답안
네, Swift에서 Struct와 Class의 가장 큰 차이점은 값 타입이냐 참조 타입이냐에 있습니다.
Struct는 값 타입이기 때문에 변수에 할당하거나 함수에 전달할 때마다 실제 값이 복사됩니다. 즉, 복사본을 변경해도 원본에는 영향을 주지 않습니다. 값 타입 데이터는 주로 스택 메모리에 저장됩니다.
반면 Class는 참조 타입입니다. 변수에 할당하거나 함수에 전달할 때 실제 값이 복사되는 것이 아니라 값의 주소, 즉 참조가 복사됩니다. 따라서 여러 변수가 하나의 인스턴스를 참조할 수 있고, 참조를 통해 인스턴스를 변경하면 모든 참조에서 변경된 내용이 반영됩니다. 참조 타입 데이터는 힙 메모리에 저장됩니다.
또 다른 중요한 차이점은 Class는 상속을 지원하지만, Struct는 상속을 지원하지 않는다는 점입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 iOS / Swift 면접 질문
- Swift에서 `var`와 `let`의 차이점을 설명하고, 각각 어떤 경우에 사용하는 것이 적절한지 예시와 함께 설명해주세요.
- Swift의 Optional이 무엇이며, 왜 필요한지 설명해주세요. 또한, Optional 값을 안전하게 언래핑하는 기본적인 방법 두 가지를 설명해주세요.
- iOS 앱 개발에서 `Delegate` 패턴은 어떤 목적으로 사용되며, 어떻게 구현하는지 기본적인 원리를 설명해주세요.
- Swift의 `Protocol`이 무엇이며, 어떤 상황에서 유용하게 사용될 수 있는지 구체적인 예를 들어 설명해주세요.
- Swift의 `Extension`이 무엇이며, 기존 클래스, 구조체, 열거형 또는 프로토콜에 어떤 기능을 추가할 수 있는지 설명해주세요.