我很难理解为什么AnyObject
的实例等于Anyobject
的数组,即为什么这个语句var one: AnyObject = [AnyObject]()
有效?
答案 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
如果您从Playground移除import Foundation
行,那么到NSArray
的桥将被中断。
现在作为结构的swift数组不再被认为是有效的AnyObject
(结构不是对象)而且你得到编译错误。