作者:阵风阿斯顿 | 来源:互联网 | 2023-10-13 11:22
Swift 3 为现有Foundation类类型引入了一些新的 覆盖值类型 ,例如Date
for NSDate
,Data
forNSData
等。完整列表和详细信息可以在下面找到
一些原因是
- 提供适当的值语义,
let
而var
不是可变且不可变的变体,
- 更多的“ Swifty” API。
新的叠加层类型应提供相应基础类型具有的所有功能,但是,如有必要,您始终可以从一种类型转换为另一种类型。
将现有的Foundation API导入Swift时,类型会自动桥接。
关于Date
和NSDate
:Date
是值类型,可以是常量或变量:
var date = Date()
date += 10.0 // Add 10 seconds
而是NSDate
引用类型且不可变。也Date
就是Comparable
let date1 = Date()
let date2 = Date()
if date1
而NSDate
s只能与进行比较.compare()
。
备注: 对于这些“覆盖类型”,值类型(结构)(例如)Date
和与之对应的基础NSDate
类型(类)(例如)是不同的类型,并且都可以在Swift中使用。请勿将其与
- SE-0086在Swift Foundation中放置NS前缀
其中NS
前缀只是简单取消了对某些基础类,如NSBundle
被 重新命名 ,以Bundle
对斯威夫特3。