일단 잘 설명 되있는 제드좌의 링크를 걸고 저는 간단 요약으로 넘어갈게용
https://zeddios.tistory.com/16
optinal이란 nil을 가질수 있는 타입이라 보시면 됩니다.
nil은 Null이라고 생각하시면 편합니다
일반 타입선언 만으로는 nil을 가질 수 없습니다!! (중요!)
선언은 var num: Int?
이렇게 선언하면 자동으로 nil이 할당되고
값을 집어넣는다 num = 30
이러면 print(num)을 하게되면 Optional(30)이 출력
그냥 Int가 아닙니다 옵셔널 타입으로 출력이 됩니다
옵셔널을 해제하는 방법은 강제언래핑, 옵셔널 바인딩, 옵셔널 체이닝을 사용하는데
뒤에 두개는 하위문서에서 설명할거고 강제언래핑은 !을 붙이면 됩니다.
var num: Int? = 30
print(num!) // 30출력
단 강제언래핑은 사용에 주의를 요합니다!!!
nil이면 에러를 뱉기 때문에 강제언래핑 난발은 치명적일 수 있습니다.
저는 학부과정에 c, c++, java, python을 경험해 보면서 아니 왜 null(=nil)을 swift는 복잡하게 옵셔널이란걸 해서 어렵게 하니 ㅠㅠ 하고있었습니다.
하지만 옵셔널을 통해 안전성이 높아지는데
zeddios에서 설명하길 옵셔널을 통해 개발자들은 이 변수가 nil값을 가질 수 있다고 간결하게 파악하여 코딩할때 참고 할 수 있다고 합니다
프로젝트가 커지면 이 부분이 크게 작용하겠죠 그리고 변수처리에 있어 확실하게 한번 거쳐야 하는 작업 덕분에 의도치 않는 nil로 차후 앱이 예측지 못한일을 할 일도 방지하구요
ps. 자세한 사항은 zeddios링크에 기술되어 있으니 swift는 Optional은 필수입니다 정독!!