스파르타 코딩 클럽 - iOS 스타터 6기/모의 면접 스터디
60. 스파르타 코딩 클럽 - 모의 면접 스터디 #2
seongpil Heo
2025. 6. 9. 10:10
📚 모의 면접 스터디
[ 질문 ]
mutating 키워드에 대해서 설명해 주세요.
A. mutating 키워드는 Swift에서 구조체(struct)나 열거형(enum) 내부에서 자기 자신을 수정할 수 있도록 허용할 때 사용하는 키워드입니다.
Mutating이 필요한 이유
Swift에서 struct와 enum은 값 타입(value type)입니다. 값 타입은 기본적으로 내부에서 자신의 속성을 직접 수정할 수 없습니다.
따라서 구조체 안에서 속성을 수정하는 메서드를 만들고 싶을 때는 mutating 키워드를 사용해 자기 자신을 수정할 수 있도록 허용해야 합니다.
call by reference와 call by value에 대해서 설명해 주세요.
1. Call by Value (값에 의한 호출)
- 값 자체를 복사해서 함수에 전달
- 함수 내부에서 값을 변경해도, 원본에는 영향 없음
- 대부분의 값 타입은 이 방식을 사용
2. Call by Referebce (참조에 의한 호출)
- 변수의 주소(참조)를 함수에 전달
- 함수 내부에서 변경하면, 원본도 변경됨
- Swift에서는 inout 키워드를 사용해야 가능함
AppDelegate와 SceneDelegate에 대해 설명하시오.
1. AppDelegate
AppDelegate는 iOS 앱의 전체적인 생명 주기 이벤트를 처리하는 클래스입니다.
AppDelegate 주요 역할
- 앱 시작 시 초기 설정
- 푸시 알림 설정
- 앱 상태 전환 처리 (백그라운드, 포그라운드)
- 앱 종료 직전 처리
2. SceneDelegate
iOS 13 이상부터 추가된 SceneDelegate는 멀티 윈도우 지원을 위해 도입되었습니다.
앱의 UI 관련 생명 주기를 AppDelegate에서 분리하여 처리합니다.
SceneDelegate는 하나의 화면(Scene)이 생성, 활성화, 비활성화되는 과정을 담당합니다.
SceneDelegate 주요 역할
- UI 윈도우 설정
- 특정 씬의 연결 또는 연결 해제 처리
- 백그라운드/포그라운드 진입 감지
weak, unowned에 대해서 설명해 주세요.
A. Swift에서 weak와 unowned는 참조 순환을 방지하기 위해 사용하는 약한 참조(weak reference) 방식입니다.
1. weak 키워드
- 선택적(optional) 참조만 가능
- 참조 대상이 메모리에서 해제되면 자동으로 nil로 설정됨
- ARC가 강한 순환을 방지할 수 있도록 도와줌
2. unowned 키워드
- 비선택적(non-optional) 참조
- 참조 대상이 해제되었을 때 접근하면 앱이 크래시 발생
- 참조 대상이 항상 메모리에 존재한다고 확신할 때 사용
화면전환 push와 present 차이점에 대해서 설명해 주세요.
1. push
- NavigationController를 사용하는 앱에서 사용
- 스택 구조로 화면을 쌓아 올림
- 기본적으로 "뒤로 가기(back)" 버튼이 자동 제공됨
2. present
- 현재 화면 위에 새로운 화면을 덮어서 표시
- 보통 dismiss()로 다시 돌아감
- NavigationController가 없어도 사용 가능
- 전체 화면, 페이지시트 등 다양한 스타일 지정 가능