Swift中Anyobject、self、Any和AnyClass

404 阅读1分钟

1、Anyobject

代表任意类的实例,类的类型

image.png

当定义一个协议,只想让类去遵循,可以用Anyobject

当不知道具体类型的时候,可以用用Anyobject表示;当确定了具体类型之后,就可以用关键字as转换成具体的类型。

image.png

如果你不确定p是不是Worker就可以用as?来进行类型转换,转换是失败p2就是nil。

image.png

2、self

T.self:T是实例对象,当前T.self返回的就是实例对象本身;T是类,当前T.self返回的就是元类型

image.png

在方法中的self

image.png

在实例方法中self是实例对象的本身;在类方法中self是类型本身。

3、Self

Self类型不是特定类型,而是为了方便引用当前类型,而无需重复或知道该类型的名称。在协议声明或者协议成员声明中,Self类型是指最终符合协议的类型。

Self作为方法的返回值

image.png

Self在协议中代表遵循协议的类型

image.png

Self在类中代表类型本身

image.png

4、Any

代表任意类型,包括funcationOptional类型,比Anyobject代表的更广。

image.png

可以用Any来表示包含不同类型的数组

5、AnyClass

代表任意实例的类型,是AnyObject.Type类型

image.png

image.png

6、获取动态类型

静态类型,在编译期确定的;动态类型,在运行期确定的。

image.png

可以通过type(of:T)来获取动态类型

对应的静态类型用.type获取