2

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

4

1 回答 1

3

使用此代码

var one: AnyObject = [AnyObject]()

您不是在比较 2 个值。

您只是将数组分配给[AnyObject]type 的变量AnyObject

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

类似的例子

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

var one: AnyObject = 1

更多示例

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

阻塞到 NSArray 的桥

如果您import Foundation从 Playground 中移除线路,则连接的桥将NSArray被中断。

现在,作为结构的 swift Array 不再被视为有效AnyObject(结构不是对象),并且您会收到编译错误。

在此处输入图像描述

于 2016-08-10T00:31:28.817 回答