1. Type vs self
class SomeClass {
}
/*
SomeClass.Type 은 타입의 타입을 정의
SomeClass.self 은 타입의 타입값
*/
let someInstance: SomeClass.Type = SomeClass.self
/*
인스턴스메써드에서 self 는 인스턴스 자기자신을 자리킴
*/
class SomeClass {
var member = "Hello"
func someFunction {
self.member = "World"
}
}
/*
타입메써드에서 self 는 타입을 자리킴
*/
class SomeClass {
static var staticMember = "Hello"
static func someFunction {
self.staticMember = "World"
}
}
2. Self
Self는 자기자신의 Type을 가리킴, 상속받은것 까지 포함.
//사용예1
extension SomeClass where Self: OtherClass {
}
//사용예2
func someFunction() -> Self {
}
//사용예3
let vc = someInstance as? Self
let allValues: [Self] = ~
let value: Self = ~