微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 为什么数组是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 to Nsstring
>字典到NSDictionary

所以如果需要,编译器会将它们更改为对象

你可以做到

var num : AnyObject = 1 // I think num is Now NSNumber
var arr : AnyObject = [1,3] // I think arr is Now NSArray of @[@1,@2,@3]

并且您不能将sturct / enum分配给AnyObject,因为它们不是对象类型(您可以使用Any来保存它们)

原文地址:https://www.jb51.cc/iOS/328041.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐