Swift有两种匿名类型:Any和AnyObject。
1.AnyObject
是一个成员为空的协议,任何对象都实现了这个协议。它可以指任何类的实例,并且等同id于Objective-C。当您特别想要使用引用类型时,它非常有用,因为它不允许使用任何Swift的结构或枚举。AnyObject当您想要限制协议以便它只能用于类时,也会使用它。
2.Any
是一个空协议集合的别名,它表示没有实现任何协议。所以它可以指任何类,结构或枚举的实例 。你会在Swift中看到这种情况,无论类型是未知的还是以可以有意义地分类的方式混合:
let values: [Any] = [1, 2, "Fish"]
注意:如何可以指定具体类型的话尽量避免使用AnyObject和Any
3.AnyClass
AnyClass是AnyObject.Type的别名而已。