Swift 为什么'var one:AnyObject=[AnyObject]()`是有效的?
我很难理解为什么Swift 为什么'var one:AnyObject=[AnyObject]()`是有效的?,swift,anyobject,Swift,Anyobject,我很难理解为什么AnyObject的一个实例等于AnyObject的一个数组,也就是说,为什么这个语句var one:AnyObject=[AnyObject]()是有效的 使用此代码 var one: AnyObject = [AnyObject]() 您没有比较两个值 您只是将一个[AnyObject]数组分配给类型为AnyObject的变量 由于Swift数组被桥接到NSArray(这是一个对象),因此如果编译器对这段代码没有问题,它将被编译 类似的例子 在下面的代码中,我们声明了一个A
AnyObject
的一个实例等于AnyObject
的一个数组,也就是说,为什么这个语句var one:AnyObject=[AnyObject]()
是有效的 使用此代码
var one: AnyObject = [AnyObject]()
您没有比较两个值
您只是将一个[AnyObject]
数组分配给类型为AnyObject
的变量
由于Swift数组被桥接到NSArray
(这是一个对象),因此如果编译器对这段代码没有问题,它将被编译
类似的例子
在下面的代码中,我们声明了一个AnyObject类型的变量,并在其中加了一个int。由于Int si桥接到NSNumber(这是一个对象),因此它再次非常好
var one: AnyObject = 1
更多例子
var word: AnyObject = "hello"
var condition: AnyObject = true
封锁通往NSArray的桥
如果从游乐场中删除导入基础的行,则连接到NSArray
的网桥将中断
现在,作为结构的swift数组不再被视为有效的AnyObject
(结构不是对象),并且会出现编译错误
对不起,我想问的是,为什么将AnyObject数组分配给AnyObject的实例是合法的?因为自动桥接到NSArray。@TonyStark:当您声明这样的变量时var one:AnyObject
您可以将任何符合AnyObject
协议的东西放入其中。由于Swift数组被桥接到符合AnyObject
的NSArray
,因此该代码是有效的。@appzYourLife。非常感谢你的帮助!这让我困惑了一段时间:)数组也是对象(或者可以桥接到对象)并不少见。在Java中,您可以执行objectone=newobject[3]代码>也一样。为了让它停止工作,您只需从文件顶部删除import Foundation
。真正的Swift数组不是任何对象
。感谢大家的帮助!爱那么多,那么多,哈哈