[英]Why is an Array an AnyObject in Swift?
我无法理解AnyObject的局限性。
您可以从标题中看到Array是一个结构体。 不过,这段代码有效:
var whatobject : AnyObject
whatobject = [1,2]
而且它不仅仅是文字数组:
var whatobject : AnyObject
let arr = [1,2,3]
whatobject = arr
但是,我无法为whatobject
分配一个结构:
struct S {}
var whatobject : AnyObject
whatobject = S() // error
那么数组毕竟不是一个真正的结构?
当桥接进来时,这是有趣的部分......
默认情况下,Swift桥
Int
(和朋友)到NSNumber
String
到NSString
Dictionary
到NSDictionary
所以如果需要,编译器会将它们更改为对象
你可以做到
var num : AnyObject = 1 // I think num is now NSNumber
var arr : AnyObject = [1,2,3] // I think arr is now NSArray of @[@1,@2,@3]
并且您不能将sturct
/ enum
分配给AnyObject
因为它们不是对象类型(您可以使用Any
来保存它们)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.