Swift 옵셔널 변수

2024. 3. 29. 21:38swift

Swift에서 코드를 만지다 보면 아래와 같이 변수 선언 뒤에 ?(물음표)가 붙은 것을 볼 수 있다.

 

var index: Int?

 

이는 Swift에서 옵셔널(Optionals) 변수를 의미한다.

이 개념은 C나 오브젝티브-C에서는 존재하지 않고 오직 스위프트에서만 존재하는 개념이다.

 

그렇다면 옵셔널 변수는 무엇이고 사용하는 이유를 알아보자.

 

 

옵셔널 변수란?

 

옵셔널(Optionals)은 변수에 어떤 값이 존재하지 않는다는 것을 나타낼 때 사용된다.

 

즉 변수가 nil이거나 값의 존재 여부를 알 수 없다는 것을 의미한다.

 

 

스위프트에서는 변수를 선언할 때 변수에 반드시 값을 할당해야 하지만, 특정 상황에서는 초기값을 선언하기 애매하거나 번거로울 수 있다.

 

이럴때 변수 선언 뒤에 옵셔널 타입을 사용해서 해당 변수의 값이 없다는 것을 알릴 수 있다.

 

 

예시를 살펴보자.

 

var index: Int?

index = 3

if index != nill {
	print(index!)
}

 

위 예시에서는 index 라는 Int타입의 변수를 선언할 때 초기값을 할당하지 않고 ?(물음표)를 붙여 '값이 없을수도 있다' 라고 표시하고 있다.

 

그리고 index 변수를 사용하고 싶을 땐 변수 뒤에 !(느낌표)를 붙여 강제 언래핑(force unwrapping)하여 사용해야 한다.

 

 

?(물음표)를 붙여서 옵셔널 변수를 선언하고 선언된 변수에 값이 할당되면 그 값은 옵셔널 래핑(warpped)되어 있기에 언래핑 하여 사용해야 하는 것이다.

 

만약 이런 과정이 불편하다면 옵셔널 변수를 선언할 때 ?(물음표) 대신 !(느낌표)를 사용하여 암묵적인 언래핑(implicity unwrapping)이 되도록 선언할 수 있다.

 

이렇게 하면 변수의 값에 접근할 때 !(느낌표)를 사용하지 않아도 된다.

 

var index: Int!

index = 3

if index != nil {
	print(index)
}