메타타입
메타타입
타입의 타입이다.
클래스, 구조체, 열거형, 프로토콜 타입을 포함하여 모든 타입의 타입을 의미한다.
self
표현식을 사요해서 타입의 값으로 접근할 수 있다.SomeClass.self는 SomeClass의 인스턴스가 아닌 타입 자체를 반환한다.
즉, 힙이나 스택 영역이 아닌 데이터 영역에 있는 타입 인스턴스를 이야기한다.
type(of: )
함수를 호출하여 해당 인스턴스의 런타임 타입의 값으로 접근할 수 있다.
예시
class Dog {
**static let species = "Dog" // 타입 저장 속성**
var name: String = ""
var weight: Double = 0.0
}
let dog1: Dog = Dog()
let dog: Dog.Type = Dog.self
let dogSelf: Dog.Type = **type(of**: dog1) // 인스턴스의 타입을 알려준다.
Dog.species // "Dog", 타입 속성에 접근하는 방법
Dog.self.species // "Dog", 정식 방법
// Int.self // 타입 인스턴스를 의미한다.
// Int.self.max
메타타입 선언 방법
커스텀타입의 경우
클래스이름.Type
구조체이름.Type
열거형이름.Type
프로토콜의 경우
프로토콜이름.Protocol
Last updated