为什么数组是Swift中的AnyObject?
我无法理解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
因为它们不是对象types的(你可以使用Any
来保存它们)