为什么数组是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
  • StringNSString
  • DictionaryNSDictionary

所以如果需要的话编译器会把它们改成对象

你可以做

 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来保存它们)