繁体   English   中英

为什么数组是Swift中的AnyObject?

[英]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
  • 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因为它们不是对象类型(您可以使用Any来保存它们)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM