AnyObject AnyClass学习理解

AnyObject和AnyClass既有区别又有联系,主要联系:

1. AnyObject和AnyClass实际上都是协议,在swift中的协议一般也可以当做一种类型来看. 可以说他们都是指的一种类型

2. 作为一种类型来说,指的是什么呢?指的是对象满足这个协议。在swift中,这些对象是swift默认设置的,程序员无法改变,只能使用。

区别:

1. 对AnyObject来说,这些对象是所有的class的实例,还有class type的实例。

2. 对AnyClass来说, 这些对象只能是class type的实例。

class type是什么呢?class type指的是实例是类(就是类对象)的数据类型。如let a : NSObject.Type = NSObject.self, a的类型就是所谓的class type

因为AnyObject也可能是类的类型如NSObject.Type,那么AnyClass也就可能为类的类型的类型, 如:NSObject.Type.Type

如 let b : AnyObject = NSObject.self, let c : AnyClass = b.self, 那么c的类型实际为NSObject.Type.Type

依次类推

你可能感兴趣的:(AnyObject AnyClass学习理解)