패스잇
모바일 개발 · 중급

Swift에서 옵셔널 값에 접근할 때 옵셔널 체이닝(Optional Chaining)과 강제 언래핑(Forced Unwrapping)의 차이점을 설명하고, 각각 어떤 상황에서 사용하는 것이 안전하고 적절한지 예시를 들어 설명해주세요.

힌트 · 옵셔널 체이닝은 `nil`일 경우 `nil`을 반환하여 안전하며, 강제 언래핑은 `nil`일 경우 런타임 에러를 발생시킵니다. 안전한 코드를 위해 옵셔널 체이닝을 선호합니다.

옵셔널 체이닝강제 언래핑안전성nil 반환런타임 에러

모범답안

Swift에서 옵셔널 값에 접근하는 방법으로 옵셔널 체이닝과 강제 언래핑이 있습니다. 둘의 가장 큰 차이점은 안전성입니다.

옵셔널 체이닝은 옵셔널 값이 nil일 경우, 뒤따르는 프로퍼티나 메서드를 실행하지 않고 그냥 nil을 반환합니다. 따라서 런타임 에러를 발생시키지 않아 안전합니다. 예를 들어, person?.address?.street처럼 사용하면 person이나 address가 nil일 경우에도 에러 없이 nil을 반환합니다.

반면, 강제 언래핑은 옵셔널 값이 nil이 아니라고 확신할 때 사용합니다. !를 사용하여 값을 강제로 추출하는데, 만약 값이 nil이라면 런타임 에러가 발생합니다. 예를 들어, myOptional!처럼 사용합니다.

일반적으로 옵셔널 체이닝을 사용하는 것이 더 안전합니다. 강제 언래핑은 정말로 값이 nil일 가능성이 없고, nil일 경우 프로그램이 예상치 못한 동작을 하는 것을 방지하기 위해 사용하는 것이 좋습니다. 즉, 디버깅 과정에서 특정 변수가 항상 값을 가져야 하는 경우에 일시적으로 사용하거나, 앱의 로직상 절대 nil이 될 수 없는 경우에만 신중하게 사용해야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 iOS / Swift 면접 질문

← iOS / Swift 면접 질문 전체 보기