본문 바로가기
개발/iOS

swift 문법 기초 3/7 (nil, Optional)

by 마자용 2021. 8. 25.
코드 출처 - 박교수의 Swift강좌13 & iOS 프로그래밍을 위한 Swift 기초 강의

 

  • nil
    • Objective-C 에서의 nil 사용은 '존재하지 않는 객체에 대한 포인터'를 의미한다.
      • ex) 네트워크로 정보를 받아오는 프로그램
        • 네트워크의 사정 상 정보를 전송할 수 없다면? → nil 들어옴 → 심각한 문제 초래할 수 있음
    • nil의 객체에 대해 메시지 호출을 할 경우 program crash가 발생할 수 있다.
      • 처리할 수 없는 값이기 때문
    • Swift에서의 nil은 '데이터가 없음'을 의미한다.
  • nil 값
    • Swift는 안전성(Safety)를 중요하게 생각하는 언어이다.
      • 그렇기 때문에 변수나 객체가 nil이 될 수 없다.
        • ex) 객체가 nil이 된다면?
          • 메시지를 줄 경우 crash가 발생한다.
        • 프로그램의 안전성이 떨어지는 요인이 된다.
    • 예시
      • var movie = "깨어난 포스"
        // movie = nil // 컴파일 오류 발생
        // var otherWise: String = nil // 컴파일 오류 발생
        var num = Int("Hello") // nil
        num // nil
        // 여기서 num은 nil이 될 수도 있고, 안 될 수도 있는 자료형임.
        // var num: Int? = Int("Hello")를 축약한 것
  • 옵셔널 Optional
    • nil이 될 수도 있고, 안 될 수도 있는 자료형에 붙여주는 것
    • 상수와 변수의 값의 유무를 검사할 때 사용
      • 어떤 값이 다른 값과 다른지 검사 X
      • 값 자체가 있는지 없는지 검사 O
    • 일반 변수가 가질 수 있는 값 → 실제 메모리 값
    • 옵셔널 변수가 가질 수 있는 값 → 실제 메모리 값 or nil 값
    • 선언
      • 형(type) 뒤에 ? 를 붙여준다.
      • 예시
        • var optionalMovie1: String? = "깨어난 포스"   // "깨어난 포스"
          optionalMovie1 = nil // nil
          var optionalMovie2: String? = nil   // nil
          optionalMovie2 = "깨어난 포스"   // "깨어난 포스"
  • 감싼 옵셔널 Wrapped Optional
    • Swift에서 문자열 "100"을 Int("100")을 통해 반환하면 → 숫자 100이 아닌 Optional("100")이 반환된다.
      • Optional("100") → nil이 될 가능성을 가지고 있는 옵셔널
        • 포장된, 감싼 옵셔널이라고 함
    • 감싼 옵셔널은 더하기(+), 빼기(-) 등의 연산을 할 수 없다.
    • 포장을 벗기는 !(Unwrapping) 연산은 가능하다.
      • 예시
        • Optional("100")! // 100
          var n = Int("100")! + Int("200")! // 300
          n // 300
      • 띄어쓰기에 주의한다.
  • 옵셔널 추출 Optional Unwrapping

 

읽어보기 - 옵셔널 (Optional)

'개발 > iOS' 카테고리의 다른 글

swift 문법 기초 4/7  (0) 2021.08.26
틀린 문제 (스위프트 함수 퀴즈)  (0) 2021.08.26
swift 문법 기초 2/7  (0) 2021.08.25
clean architecture  (0) 2021.08.25
swift 문법 기초 1/7  (0) 2021.08.23

댓글