Swift3 입문
?와 !의 차이
?
optional-type
- nil이 될 수 있는 데이터 형태. nil: 어떤 타입이든 데이터가 없으면 nil이다.
- non-optional 데이터는 nil이 될 수 없기 때문에 무조건 선언시 초기화가 필요하다.
!
forced-unwrapping-operator
- Optional-type에 값이 있음을 명시적으로 알려주는 표시
DownCasting
as?
조건부 다운 케스팅
- 결과값은 Optional-type
- 원하는 형태로 케스팅이 불가능 할 경우 nil을 return한다.
as!
강제 다운 케스팅
- 다운 케스팅 + 강제 unwrapping
- 다운 케스팅 실패시에 실시간으로 오류를 반환한다.