加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift中的AnyObject和Any

发布时间:2020-12-14 06:09:04 所属栏目:百科 来源:网络整理
导读:我不明白什么时候使用AnyObject和什么时候用Swift中的Any。 我的情况,我有一个字典 [String: ???] ??? :可以是Int,Double,Float,String,Array,Dictionary 有人可以解释一下Any和AnyObject之间的区别 和女巫使用在我的情况。 Alak AnyObject仅用于引用
我不明白什么时候使用AnyObject和什么时候用Swift中的Any。

我的情况,我有一个字典

[String: ???]

??? :可以是Int,Double,Float,String,Array,Dictionary

有人可以解释一下Any和AnyObject之间的区别
和女巫使用在我的情况。

Alak

AnyObject仅用于引用类型(类),Any用于值类型和引用类型。

所以你应该去[String:Any]。

Type Casting for Any and AnyObject

Swift provides two special types for working with nonspecific types:

  • Any can represent an instance of any type at all,including function
    types.
  • AnyObject can represent an instance of any class type.

NOTE:

Use Any and AnyObject only when you explicitly need the behavior and
capabilities they provide. It is always better to be specific about
the types you expect to work with in your code.

从Swift编程语言:
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-ID342

– –

还要注意,当您使用Cocoa API时,通常接收AnyObject数组,这是因为Objective-C数组不是典型的。
所以你需要将它们转换为你期望的数组类型。

– –

编辑:(2015年12月22日)
在最后一条语句中,注意这是随着Swift 2.0和Xcode 7而改变。
苹果在Objective-C中引入了‘Lightweight’ generics,所以很多Cocoa API现在已经返回了正确的类型。

编辑:(2016年10月18日)注意,从Swift 3.0开始,Objective-C id现在被导入为Any,而不是AnyObject。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读