Any,AnyObject
- Any:可以代表任意类型(枚举,结构体,类,函数类型)
- AnyObject:可以代表任意类类型
X.self, X.Type, AnyClass
- X.self是一个元类型(metadata)的指针,metadata存放着类型相关的信息
- X.self属于X.Type类型
class Person {
}
class Student: Person {
}
let perType: Person.Type = Person.self
let stuType: Student.Type = Student.self
let anyType: AnyObject.Type = Person.self
Self
- 代表当前类型
- 一般用作返回值类型,限定返回值跟方法调用者必须是同一类型
protocol Runable {
func test() -> Self
}
class Doggie: Runable {
required init() { }
func test() -> Self {
return type(of: self).init()
}
}
class BigDog: Doggie { }
var d = Doggie()
print(d.test())
var bd = BigDog()
print(bd.test())
网友评论