栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么整数不符合AnyObject协议?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么整数不符合AnyObject协议?

Swift中有两种类型的东西-

Any
可以真正容纳任何东西-结构,枚举或类,以及
AnyObject
只能容纳类。

AnyObject
有时似乎可以保留结构的原因是,某些特定类型会根据需要隐式转换为它们的NSE等效项,以减少Objective-C互操作的痛苦。

当你写

let ao: AnyObject = Int(1)
,这不是 真的
把一个
Int
成一个
AnyObject
。相反,它隐式将您
Int
转换为
NSNumber
,这是一个类,然后将其放入。

但是只有某些类型具有此隐式转换。

Int
有但
Int32
没有,因此,这种行为:

// finelet aoInt: AnyObject = Int(1) as NSNumber// also fine: implicit conversionlet aoImplicitInt: AnyObject = Int(1)// not fine: error: 'Int32' is not convertible to 'NSNumber'let aoInt32: AnyObject = Int32(1) as NSNumber// but the implicit error is less, ahem, explicit// error: type 'Int32' does not conform to protocol 'AnyObject'let aoImplicitInt32: AnyObject = Int32(1)

可以争论的是,应该有更多的隐式转换来润滑轮子,但是这些隐式转换又是造成很多混乱的根源,而最新Beta版中的方向是减少它们而不是增加它们。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394650.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号