10209192769956296
James Junhwa Song
  • 2016.4.12 17:21
  • 조회수 271
  • 답변수 2
10209192769956296
James Junhwa Song
  • 2016.4.12 17:21
  • 조회수 271
  • 답변수 2

as 문법에 대해 질문드릴게요

동영상에 보면 2:33에 segue 설정중 as 를 쓰시고 아마 ~일것이다 라고 하시면서
넘어가셨는데, as에 대한 문법의 용도를 가르쳐주실 수 있을까요?

좋은 강의 항상 감사하게 보고있습니다 :)
(사실은 이 말을 하고싶어서.. ㅎㅎ)

  • #iOS Swift입문
  • #Navigation 구현3 - Segue로 값 넘기기

2 답변

  • 10209192769956296
    James Junhwa Song
    • 2016.4.12 17:24

    스위프트 레퍼런스를 보니 super class로 형 변환을 시켜주는 키워드인것 같은데,
    여기서 뷰컨트롤러로 받아왔을 때, 클래스의 정보를 사용하거나 메소드를 사용하고 싶으면
    이와같이 형 변환을 시켜주는게 그 목적인지 궁금합니다.

  • Seongkwanyoonprofile eb5yt2
    윤성관(링고스타)
    • 2016.4.15 01:13

    강의 잘 보고 계시다니 다행입니다. 그리고 좋은 질문 주셔서 감사합니다.
    입문 과정이다보니 타입캐스팅에 대해 자세한 설명을 할 기회가 없는데, 이 기회에 일단 설명드리면,

    타입 캐스팅은 인스턴스의 타입을 명확히 함으로써 인스턴스의 기능을 사용할 수 있도록 하는 데 목적이 있습니다. 프라퍼티 접근이나 나 메소드 호출 또는 특정 클래스의 서브클래스 혹은 프로토콜을 준수하는 지 확인하는 거죠.

    is와 as 오퍼레이터를 이용해 타입 캐스팅을 할 수 있는데요,
    is 연산자는 타입 체크 연산자로서, 인스턴스가 특정 서브클래스 타입인지를 체크합니다. 주로 if나 switch 조건문에서 많이 사용합니다.

    어떤 클래스의 인스턴스는 실제로는 그 서브클래스의 인스턴스인 경우가 있다. 이 경우 as 연산자를 이용해 서브클래스 타입으로 변환할 수 있는데, 이것을 다운캐스트라고 합니다.

    이러한 다운캐스트는 실패의 가능성이 있기 때문에 두가지 방식을 제공한다. as? 는 다운캐스트 하려는 타입의 옵셔널 값을 리턴하며, as 는 다운캐스트한 뒤 그 결과를 force unwrap 합니다.

    타입캐스트가 성공하리라는 보장이 없으면 as?를 사용하는 것이 안전합니다. 잘못된 타입으로 as 다운캐스트를 하면 런타임 에러를 만들어 낼 수 있습니다.

    as!는 강제 변환 연산 입니다.. !는 변환이 실패할 수도 있다는 것을 의미하며, 실패시에는 크래시를 일으킬 수 있습니다.

    • 애플의 문서 중 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-ID338 에 보다 자세한 설명이 있습니다.-윤성관(링고스타)
      2016.4.15 01:17

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.