Swift 둘러보기 (4)

EN·2022년 9월 25일

Any, AnyOvject와 nil

  • Any
    • 스위프트의 모든 데이터 타입을 사용할 수 있다는 뜻,
    • 근데 꼭 좋은것 만은 아니다.
    • Any타입도 타입이기 때문에, 어떤 Any타입 변수에다가 123.12를 넣는다고 하더라도, 다른 Any변수에 넣을 수 없다.
    • Any에 여러 String, Int, Float가 속한게 아니고, 그냥 별개의 타입일 뿐이다.
  • AnyObject
    • Any보다는 조금 한정된 의미
    • 클래스의 인스턴스만 할당될 수 있따.
    • 이것도 가능한 한 사용하지 마라.
  • Nil
    • 특정 타입이 아니라 ‘없음’을 나타내는 Swift의 키워드
    • 변수 또는 상수에 값이 들어있지 않고 비어있음을 나타내는데 사용한다.
    • 여기에 접근하면 잘못된 메모리 접근으로 런타임 오류가 발생한다.

타입 캐스팅과 타입 검사

  • Swift코드를 작성할 때 컴파일러가 "어떤 값의 특정 타입을 식별하지 못하는 경우"가 발생할 것이다.
  • 이럴 경우는 메서드나 함수가 반환하는 값이 불분명하거나 예상되지 않은 타입의 값일 때 종종 발생한다.
  • 이럴 때는 as 키워드를 사용하여 코드가 의도하는 값의 타입을 컴파일러가 알 수 있게 해야 한다.

업캐스팅

  • 타입캐스팅의 두 가지 형태 중 하나
  • 특정 클래스의 객체가 상위 클래스들 중의 하나로 변형되는 것
  • as 키워드를 사용해, 이러한 변환은 성공할 것이라고 줌.(보장된 변환)
  • UIControl에는 자식들이 UISlider과 UIButton이 있는데, UIButton을 UIControl로 업캐스팅 가능하다.
  • 아부지 뭐하시노? 오 너 걔 아들이여?? 오키오키 너 오키 약간 이런 느낌이라고 하신단다.

다운캐스팅

  • 안전하게 수행된다거나 유효하지 않은 변환시도를 컴파일러가 잡아낼 것이라는 보장을 할 수 없다.
  • 컴파일러가 발견하지 못했다면, 대부분 런타임에서 에러가 발생할 것이다.
  • As!를 사용하여 그 클래스의 하위 클래스로 변환.(강제 변환)
  • 여기서 옵셔널 바인딩 기법을 사용할 수 있다. 물음표를 사용 한다!
profile
iOS/JUJITSU

0개의 댓글