这让我感到很奇怪.在Swift中尝试以下方法:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
println(self.superclass) //Outputs "(ExistentialMetatype)"
}
Run Code Online (Sandbox Code Playgroud)
这使控制台上的输出为ExistentialMetatype
深入研究Swift的NSObject框架,它将其声明superclass为类型的只读计算属性AnyClass
var superclass: AnyClass! { get }
Run Code Online (Sandbox Code Playgroud)
但是没有提到这个词ExistentialMetatype.我不知道为什么,但它提醒Objective-C的运行时(可能是它中的Metatype一词).有人知道吗?
目前,类型(的实例元类型)获得印像无用的东西(Metatype)或(ExistentialMetatype).AnyClass是AnyObject.Type,元类型.因此,如果您尝试打印,AnyClass您将得到这个无益的描述.
但是,Objective-C中的类是具有良好描述的对象.Swift允许将类类型转换为对象,因此可以以Objective-C方式使用它们.如果将其强制转换为AnyObject第一个,您将看到该类的名称:
println(self.superclass as AnyObject!)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1415 次 |
| 最近记录: |