Optional
- 특징
- 스위프트가 잠재적 오류를 다루는 방법
- 안전성을 높이기 위해 사용
- nil을 사용할 수 있는 타입 = 옵셔널
- nil
- 값이 없음을 의미
- 0이나 ""(공백)과는 다르다
- 옵셔널 타입만 nil을 반환할 수 있다
- 선언
- 자료형 뒤에 물음표를 붙인다
- 옵셔널 타입으로 자료형 선언 시, 자동으로 nil 로 초기화 된다
- 값을 대입할 때는 일반 변수처럼 생각하고 다루어도 괜찮다
- 값 처리
- 옵셔널 타입 결과값은 그대로 사용할 수 없다 / 연산을 지원하지 않는다
- 옵셔널 해제 / 옵셔널 언래핑 :: 옵셔널 객체 내부 값을 추출하는 과정
- 명시적 해제
- 강제적 해제
- 비강제적 해제
- 묵시적 해제
- 컴파일러에 의한 자동 해제
- 연산자를 사용한 자동 해제
- 명시적 해제
- 옵셔널 강제 해제
- 옵셔널 타입의 값 뒤에 ! 느낌표를 붙여준다
- ! == 강제해제 연산자
- 옵셔널 값이 nil 이라면 오류가 발생한다 > 조건문 체크 반드시 필요!
- 옵셔널 바인딩
- 비강제적 해제
- 조건문을 사용하여 옵셔널에 할당된 값을 임시로 변수/상수에 할당한 다음, 체크한다
- 강제 해제가 갖는 nil에 대한 오류 가능성보다 안전하게 언래핑 가능
- 컴파일러에 의한 옵셔널 자동 해제
- 비교연산자를 사용하면 옵셔널 객체를 해제하지 않아도 된다
- 한쪽이 옵셔널, 한쪽이 일반 타입이라면 자동으로 옵셔널을 해제한다
- 옵셔널 묵시적 자동 해제
- 타입 뒤에 ? 물음표 연산자 대신에 ! 느낌표 연산자를 붙여준다
- nil을 대입해도 문제가 없다
- 일반 타입처럼 사용할 수 있어서 편리하다
- 옵셔널 묵시적 자동 해제 주의점
- 변수의 값이 nil이 될 가능성이 있다면 사용하면 안된다
'iOS > Swift' 카테고리의 다른 글
[Swift] 열거형 enum (0) | 2023.11.20 |
---|---|
[Swift] 구조체 Struct / 클래스 Class (0) | 2023.11.16 |
[Swift] 일급함수(일급객체), 클로저(익명함수) (0) | 2023.11.14 |
[Swift] 함수,매개변수,inout 키워드 (0) | 2023.11.14 |
[Swift] 배열,집합,튜플,딕셔너리 (0) | 2023.11.13 |