一尘不染

斯威夫特3:约会vs NSDate?

swift

NS和非NS类之间有什么区别?特别是NSDatevs Date?是否NS代表围绕核心非NS功能性的某种包装器?


阅读 185

收藏
2020-07-07

共1个答案

一尘不染

Swift 3 为现有Foundation类类型引入了一些新的 覆盖值类型 ,例如Datefor NSDateDatafor
NSData等。完整列表和详细信息可以在下面找到

一些原因是

  • 提供适当的值语义,
  • letvar不是可变且不可变的变体,
  • 更多的“ Swifty” API。

新的叠加层类型应提供相应基础类型具有的所有功能,但是,如有必要,您始终可以从一种类型转换为另一种类型。

将现有的Foundation API导入Swift时,类型会自动桥接。

关于DateNSDateDate是值类型,可以是常量或变量:

var date = Date()
date += 10.0 // Add 10 seconds

而是NSDate引用类型且不可变。也Date就是Comparable

let date1 = Date()
let date2 = Date()

if date1 < date2 { }

NSDates只能与进行比较.compare()

备注: 对于这些“覆盖类型”,值类型(结构)(例如)Date和与之对应的基础NSDate
类型(类)(例如)是不同的类型,并且都可以在Swift中使用。请勿将其与

其中NS前缀只是简单取消了对某些基础类,如NSBundle重新命名 ,以Bundle对斯威夫特3。

2020-07-07