Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么'var one:AnyObject=[AnyObject]()`是有效的?_Swift_Anyobject - Fatal编程技术网

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数组不是
任何对象
。感谢大家的帮助!爱那么多,那么多,哈哈