시작하며
Optional이란 무엇일까?
iOS를 입문하는 많은 사람들이 Optional이라는 개념에서 자주 막히곤 한다. 나 또한 그랬고, 생소한 개념인 탓에 어렵게 느껴지는 것 같다.
오늘은 간단하게 Optional에 대해 설명을 해보려고 한다.
우선 Optional의 정의에 대해 알아보자.Optional이란, 어떤 데이터가 값을 가지고 있을 수도 있고, 없을 수도 있다고 명시하는 것이다.
이게 무슨 소리인가?
우리가 현실에서 사용하는 '보조배터리'를 예시로 들어보자.

이 보조 배터리는 현재 배터리가 얼마나 남았는지 알 수가 없다. 즉, 우리는 현재 보조 배터리에 잔량이 얼마나 남았는지 알 수가 없다
보조 배터리의 상태를 예상하자면 아래와 같다.
1. 보조 배터리에 남은 잔량이 없음
2. 보조 배터리에 남은 잔량이 있음
3. 보조 배터리가 고장남
자 그럼 이제 하나씩 Optional과 대조하며 상태를 비교해보자.
1) 보조 배터리에 남은 잔량이 없음
만약 보조 배터리에 남은 잔량이 없다면 핸드폰은 충전되지 않을 것이다.

이것은 Optional에서 값이 없다라는 상황이라고 볼 수 있다. 코드로 표현하자면 아래와 같다.
var charge: Int?
if charge != nil {
print(charge)
} else {
print("배터리 없음")
}
// 출력: 배터리 없음
2) 보조 배터리에 남은 잔량이 있음
보조 배터리에 잔량이 남아있다면 핸드폰은 무사히 충전이 될 것이다.

이것은 Optional에서 값이 있다라는 상황이라고 볼 수 있다. 코드로 표현하자면 아래와 같다.
var charge: Int? = 50
if charge != nil {
print(charge)
} else {
print("배터리 없음")
}
// 출력: 50
3) 보조 배터리가 고장남
만약 보조 배터리가 고장난 상태라면 어떻게 될까? 최악의 경우 핸드폰이 고장날 수도 있을 것이다.

이것은 Optional에서 값이 없을 때, nil값을 사용하려고 할 때와 같은 상황이다. 코드로 표현하자면 아래와 같다.
var charge: Int?
print(charge!) // 에러 발생
이제 대충 Optional에 대한 설명이 끝난 것 같다.
Optional의 궁극적인 목적은, 코드 안정성을 향상시키는 것이다. 코드를 작성하다보면 언제나 모든 데이터가 값을 가지고 있는 상황은 거의 없다.
만약 데이터가 값을 가지고 있지 않은데 사용하려고 하거나 값을 수정하려고 한다면 치명적인 에러가 발생하게 될 것이다.
이 때, Optional을 사용하면 상황에 따라 값이 없을 수도 있음을 명시하고, 값이 없을 경우 nil을 반환하여 에러의 발생을 방지할 수 있다.
또, 반환 값이 nil일 경우 어떤 액션을 취할지 로직을 작성하면 예외처리가 되어 더 높은 안정성을 얻을 수 있다.
특히 앱 개발에서 Optional을 사용하는 경우가 많은데, 네트워크 통신이나 UI와 관련된 로직에서 값이 없을 수도 있는 상황이 많기 때문에 필수적으로 사용되는 타입이다.
추가로 Optional은 enum으로 만들어진 타입인데, 간단히 표현하자면 아래와 같다.
enum Optional {
case some
case none
}
여기서 Optional에 값이 있다면 some 케이스가 되어 해당하는 값을 반환하게 되고, 값이 없다면 none 케이스가 되어 nil을 반환하게 된다.
마무리하며...
오늘은 많은 iOS 입문자들이 어려워하는 부분 중 하나인 Optional에 대해 간단히 글을 작성해 보았다. 오늘 글의 요약을 하자면 아래와 같다.
Optional은 코드 안정성을 높이기 위한 타입이다Optional은 enum 으로 구현된 타입이다.
'iOS' 카테고리의 다른 글
| Toss / 4개 플랫폼, 하나의 제품 과제 학습 (0) | 2026.07.04 |
|---|---|
| iOS / CleanArchitecture로 구조 생성하기 (0) | 2026.06.21 |