1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 在 Swift 中,Any 和 AnyObject 是两个不同的类型,它们有着不同的含义和用法。
1-Any: Any 是 Swift 中的一个特殊类型,它可以表示任意类型的实例,包括值类型和引用类型。 可以将任何值赋给 Any 类型的变量或常量。
var anyValue: Any anyValue = 5 anyValue = "Hello" anyValue = [1, 2, 3]
2-AnyObject: AnyObject 是一个协议,它用来表示任意类类型(class type)。 在 Swift 中,结构体和枚举是值类型,而类是引用类型。AnyObject 协议只能被类类型遵循。
protocol MyProtocol: AnyObject { func myMethod() }
class MyClass: MyProtocol { func myMethod() { print("MyMethod called") } }
在上述示例中,MyProtocol 协议要求遵循它的类型必须是类类型, 因此使用了 AnyObject 关键字进行限定。MyClass 类遵循了 MyProtocol 协议,因为它是一个类。
如果你想要定义一个只能被类遵循的协议,可以像上面的示例一样, 使用 AnyObject 关键字来限定协议的遵循类型。这样,只有类能够遵循这个协议,而结构体和枚举则不能。
|