我无法理解AnyObject的局限性。
您可以从标题中看到Array是一个结构。但是,此代码有效:
var whatobject : AnyObject whatobject = [1,2]
而且不只是文字数组:
var whatobject : AnyObject let arr = [1,2,3] whatobject = arr
但是,我不能为我分配一个结构whatobject:
whatobject
struct S {} var whatobject : AnyObject whatobject = S() // error
那么,数组毕竟不是真正的结构吗?
这是桥接出现时最有趣的部分…
默认情况下,Swift bridge
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用来保存它们)
sturct
enum
AnyObject
Any