목록SWIFT (3)
sanichdaniel의 iOS 개발 블로그
Self는 자기 자신의 타입을 가리키는 문법적 슈가 이다. 자신의 타입을 반복하거나, 명시 안하고 사용할수 있다 1. 프로토콜에서 Self 타입은 프로토콜을 채택할 타입을 가리킨다. 2. struct, class, enum 에서 Self 타입은 현재 자신이 속해있는 선언의 타입 class Superclass { func f() -> Self { return self } } let x = Superclass() print(type(of: x.f())) // Prints "Superclass" class Subclass: Superclass { } let y = Subclass() print(type(of: y.f())) // Prints "Subclass" let z: Superclass = Subclas..
값의 dynamic 타입을 리턴해주는 함수 static 타입: 컴파일 타임에 타입 dynamic 타입: 런타임에 실제 타입 아래의 예시에서 count 변수는 static, dynamic 타입이 모두 Int이다. 하지만 value 인자의 static 타입은 Any이고, dynamic 타입은 Int이다. func printInfo(_ value: Any) { let t = type(of: value) print("'\(value)' of type '\(t)'") } let count: Int = 5 printInfo(count) // '5' of type 'Int' protocol MyProtocol {} class SomeClass: MyProtocol {} let someClass: MyProtocol ..
Metatype 타입이란, 타입의 타입입니다. class, structure, or enum의 메타타입은 자신의 이름 뒤에 .Type이 옵니다. protocol 타입의 메타타입은 이름 뒤에 .Protocol 이 옵니다. class Some { } let someType: Some = Some() let metaSomeType: Some.Type = type(of: Some()) Some 타입은 Some 클래스의 인스턴스 타입이고 Some.Type은 Some 클래스 자체의 타입 = 메타타입 .self postfix .self 를 이용하여 타입을 값으로 접근할수 있습니다. SomeClass.self 는 SomeClass 의 인스턴스가 아닌, SomeClass 타입 자체를 리턴합니다. SomeProtocol...