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
依次类推
网友评论