iOS개발을 하다보면 자연스럽게 Optional에 대해 이해할 수 있다.
그런데 관련 용어들에 대해 정확히 숙지 하지 못한듯 해서 이번에 간단하게 정리해보려고 한다.
옵셔널은 Swift에서 값이 있을 수도 있고 없을 수도 있는 상황을 나타내는 문법으로 Swift의 특징 중 하나이다. Swift의 모든 타입은 기본적으로 옵셔널이 될 수 있다.
값이 존재하지 않을 수 있는 상황을 안전하게 다룰 수 있도록 도와준다.
nil이 될 수도 있는 값은 반드시 옵녀널로 선언해야 하며 물음표(?)로 표현한다.
옵셔널 타입으로 선언된 변수나 상수에서 값을 추출하는 과정
옵셔널은 값이 없을 수도 있기 때문에 값에 접근한 때에는 안전한 방식으로 처리해야 한다.
옵셔널 바인딩은 옵셔널의 값이 존재하는지 확인하고, 값이 존재하는 경우에만 안전하게 값을 추출하는 방법이다.
주로 if let 또는 guard let 구문을 사용하여 옵셔널 값을 추출한다.
옵셔널 바인딩을 통해 안전하게 값을 추출하여 런타임 에러를 방지할 수 있다.
강제 언래핑은 옵셔널 값에서 실제 값을 강제로 추출하는 과정이다.
옵셔널 값을 강제 언래핑 하려면 느낌표(!)를 붙여 강제 언래핑이 가능하다.
값이 nil인데 강제 언래핑을 시도하면 값이 없기 때문에 런타임 에러가 발생
가능하면 옵셔널 바인딩을 사용하거나, 더 안전한 방법을 값을 처리하는 것을 권장
옵셔널이지만 값이 항상 nil이 아니라고 환신할 때 사용된다.
옵셔널을 일반 값처럼 사용할 수 있도록 한다.
상수를 선언할 때 느낌표(!)를 사용하여 표시한다.
만약 값에 접근했을 때 nil이라면 런타임 에러 발생
옵셔널 값이 nil인지 아닌지를 확인하면서 프로퍼티나 메서드에 안전하게 접근할 수 있게 해주는 메커니즘이다.
중첩된 옵셔널 값에 안전하게 접근할 수 있다.
옵셔널 체이닝을 사용하면 체인 중 하나라도 nil이면 전체 표식이 nil이 되고, 런타임 에러를 방지할 수 있다.
프로퍼티, 메서드, 서브스크립트 등에 연속적으로 접근할 수 있다.
: 주로 프로퍼티나 메서드 호출기 값이 nil일 수 있는 상황에 사용.
특히 다수의 옵셔널 값들이 연쇄적으로 사용되는 경우에 효과적이다.
중간에 nil이 있더라도 전체 표현식이 graceful하게 실패, 코드의 실행이 중단되지 않아 안전하게 접근하고 처리 가능.
객체간의 관계에서 하위 객체의 프로퍼티에 접근하거나 메서드를 호출할 때, 값이 있는 경우에도 코드의 실행을 계속 할 수 있다.
: 옵셔널 체이닝은 프로퍼티나 메서드에 안전하게 접근하고 호출하기 위한 메커니즘이다. 값이 nil인 경우에도 실행이 중단되지 않는다. 반면 강제 언래핑은 값이 항상 존재한다고 확신할 때 사용되며, 값이 nil인 경우 런타임 에러가 발생할수 있기 때문에 주의가 필요.
Optinal에 대해서 간단하게 정리해봤는데 헷갈렸던 용어들을 숙지할 수 있었다.