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

时间:2016-08-10 00:26:35

标签: swift anyobject

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

1 个答案:

答案 0 :(得分:3)

使用此代码

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(结构不是对象)而且你得到编译错误。

enter image description here