我在理解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
(和 friend )到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
来保存它们)关于ios - 为什么数组在Swift中是AnyObject?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24154304/