Metatype 알아보기

권승용(Eric)·2025년 1월 2일

TIL

목록 보기
28/38

Metatype 타입

  • 메타타입 타입은 클래스 타입, 구조체 타입, 열거형 타입, 프로토콜 타입 등 모든 타입의 타입을 의미.

  • 클래스, 구조체, 열거형의 메타타입은 해당 타입의 이름 뒤에 .Type이 붙는다.

  • 프로토콜 타입의 메타타입은 해당 프로토콜의 이름 뒤에 .Protocol이 붙는다.

    • ex) 클래스 타입 SomeClas의 메타타입은 SomeClass.Type
    • 프로토콜 SomeProtocol의 타입은 SomeProtocol.Protocol
  • self 접미사 표현식을 사용하면 타입을 값으로 접근 가능.

  • SomeClass.self는 SomeClass 자체를 반환하며, SomeClass 인스턴스를 반환하지 않음

  • SomeProtocol.self는 SomeProtocol 자체를 반환하며, SomeProtocol을 런타임에 준수하는 타입 인스턴스를 반환하지 않음.

  • type(of:) 함수를 타입의 인스턴스와 함께 호출하면 해당 인스턴스의 동적 런타임 타입을 값으로 얻을 수 있음.

Metatype이 필요한 이유

  • 타입 자체를 가리켜야 할 경우가 있기 때문에 필요.
  • 함수 내에서 타입을 파라미터로 받아 캐스팅이 필요하거나, switch로 타입 값을 구분해야 하는 경우 사용

출처

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/types/#Metatype-Type

profile
ios 개발자에용

0개의 댓글