为什么 var one: AnyObject = [AnyObject]() 有效?
Why `var one: AnyObject = [AnyObject]()` is valid?
我很难理解为什么 AnyObject
的实例等于 Anyobject
的数组,即为什么这个语句 var one: AnyObject = [AnyObject]()
是有效的?
使用此代码
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
(结构不是对象)并且你会得到一个编译错误。
我很难理解为什么 AnyObject
的实例等于 Anyobject
的数组,即为什么这个语句 var one: AnyObject = [AnyObject]()
是有效的?
使用此代码
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
(结构不是对象)并且你会得到一个编译错误。