ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Type Casting
    Swift 2021. 1. 29. 15:12

    안녕하세요. 그린입니다!

    이번 포스팅에서는 Type Casting (타입 캐스팅)에 대해 학습해보겠습니다😺

    Type Casting

    : 인스턴스 타입 확인 슈퍼/서브 클래스 타입같이 사용하기 위한 개념

    : is / as 연산자로 구현

     

    1) is 키워드

    : 인스턴스 타입 확인

    class Test {    
        var age: UInt    
        init (age: UInt) {        
            self.age = age    
        }
    }
    var green = Test(age: 100)
    if green.age is UInt {    
        print(“green’s age is UInt type)
        } else {    
        print(“green’s age is not UInt type)
    }

    -> 이렇게 해당 타입이 맞는지 확인해주는 개념

     

    나아가 여러 클래스를 상속 받았을때 해당 상속받은 클래스의 타입과 일치하는지 판별해줄 수도 있습니다.

    (상속받은쪽에서 갖는 프로퍼티의 타입에 따라)

     

    2) as 키워드

    : 다운캐스팅 할때 사용한다.

    class SubTest {    
        var name: String    
        init (name: String) {        
            self.name = name    
        }
    }
    var green = SubTest(name: “green”)
    if let red = green as? Test {    
        print(“Age: \(green.age)”) else {    
        print(“Type Error”)
        }
    }

    ->이렇게 해당 타입에서 조건을 판별할때 사용합니다.

    그리고 다운캐스팅을 있으면 다운캐스팅을 진행해 알맞은 출력을 해줍니다.

    as 조건부이기 때문에 다운캐스팅 할때 옵셔널을 붙여줍니다.

    만약 항상 참인 조건일때는 as! 강제 추출을 해준다. 만약 그렇지 않으면 런타임 에러가 나타나게됩니다.

     

    추가로, as 컴파일 시에 as?, as! 런타임 시에 실행됩니다.

     

    타입 캐스팅을 활용하면 다양하게 매칭을 switch문으로 구현할 있어 좋을것같습니다.

    아직 타입캐스팅 패턴이나 더 나아간 부분에 대해서는 또 추후 포스팅하겠습니다.

    감사합니다!🙌

    'Swift' 카테고리의 다른 글

    Swift Performance  (0) 2021.03.01
    ARC 심화  (0) 2021.02.17
    Protocol Oriented Programming  (0) 2021.01.28
    타입 메서드  (0) 2021.01.27
    온도 표현단위와 변환 방법  (0) 2021.01.19
Designed by Tistory.