Swift 基础与标准库?

Swift foundation vs standard library?

问题 - Swift Foundation 和标准库有什么区别?

我知道它们不在同一个存储库中。 Swift standard library and Swift Foundation.

我的理解是 Swift 标准库 是支持核心数据类型、数组等的低级库...用 [=29= 编写]. Swift Foundation 用于更高级别,其中已经包含用 swift 语言编写的通用实用程序代码。但我的困惑是,为什么像 NSArray 这样的 objective-c 类 包含在 Foundation 库中?能详细解释一下吗?

要了解这里发生了什么,首先要区分三个件事:

  • Swift library 是 Swift 原生类型,比如 String 和 Array。

  • Foundation 是 Cocoa Objective-C 基本类型集,例如 NSString 和 NSArray 以及 NSDate 和 NSData。

  • Swift 还包含一个 overlay 可以遮蔽(不遮挡)基金会中的类型.例如,日期隐藏 NSDate,数据隐藏 NSData。这使得 Cocoa Foundation 在 Swift.

  • 中更容易使用

请注意,Swift 类型相对于 Cocoa Objective-C 类型存在两种截然不同的关系。

  • String 和 Array 是完全独立的原生 Swift 类型。它们分别 bridged 到 NSString 和 NSArray,但它们 exist without Foundation.

  • Data 和 Date 分别只是 NSData 和 NSDate 的外观。如果您导入 Swift 但不导入 Foundation,则数据和日期甚至都不存在。

好的,到目前为止一切顺利。但这种情况造成了一个难题,因为人们想在 不需要 Foundation 的情况下使用 Data 和 Date ,在像 Linux 这样一开始就没有 Foundation 的地方。因此,您所指向的项目 https://github.com/apple/swift-corelibs-foundation 为 Foundation 的 Data 和 Date(等等)independent 提供了支持。 但是如果你正在为 iOS 或 MacOS 开发你永远不会使用它,因为真正的 Foundation 存在。