为什么 var one: AnyObject = [AnyObject]() 有效?

Why `var one: AnyObject = [AnyObject]()` is valid?

我很难理解为什么 AnyObject 的实例等于 Anyobject 的数组,即为什么这个语句 var one: AnyObject = [AnyObject]() 是有效的?

使用此代码

var one: AnyObject = [AnyObject]()

您不是在比较 2 个值。

您只是将 [AnyObject] 的数组分配给类型为 AnyObject 的变量。

由于 Swift 数组桥接到 NSArray(这是一个对象),因此编译器如果可以使用此代码。

相似例子

在下面的代码中,我们声明了一个 AnyObject 类型的变量,并将一个 int 放入其中。由于 Int si 再次桥接到 NSNumber(这是一个对象),因此编译器非常好

var one: AnyObject = 1

更多示例

var word: AnyObject = "hello"
var condition: AnyObject = true

阻塞到 NSArray 的桥接

如果您从 Playground 中删除 import Foundation 线,则通往 NSArray 的桥接会中断。

现在作为结构的 swift 数组不再被认为是有效的 AnyObject(结构不是对象)并且你会得到一个编译错误。