Swift中的Any 与 AnyObject、AnyClass的区别?

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的别名而已。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容