스파르타 코딩 클럽 - 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가 없어도 사용 가능
  • 전체 화면, 페이지시트 등 다양한 스타일 지정 가능