根据swift.org/migration-guide,调度和相关功能有一个很好的新的快速接口(例如 dispatch_async
- > DispatchQueue.async
)。还添加了其他基础类型 Data
和 Date
值类型而不是 NSData
和 NSDate
。
但是,在linux,ubuntu15.10上的swift3(开发人员预览版1)的开源版本中,编译器拒绝所有这些更改。事实上,在github上查看swift和swift-corelibs的开源版本,我实际上并没有看到任何这些变化。由于它将在XCode开发人员预览版上进行编译,这使我相信:我在Linux上做错了或者这些更改是在Apple分支而不是开源分支中进行的。任何人都可以验证这一点,如果是后者,如果是这样,我们如何知道Apple分支与开源分支的变化?
从Swift 3.0发布版本开始,GCD在Linux上很简单 import Dispatch
这有点令人困惑,因为在iOS / macOS上不需要它 Dispatch
默认情况下导入模块。
谢谢 布拉德拉森 寻找 基础 和 调度 在源中叠加。根据swift.org:
SDK叠加:特定于Apple平台,SDK叠加
(在stdlib / public / SDK中实现)提供特定于Swift的添加
和改进现有的Objective-C框架以改进它们
映射到Swift。特别是,基础覆盖提供
对Objective-C代码的互操作性的额外支持。
tl; dr这些文件夹中的任何内容都只是Apple平台。仍然不确定为什么他们将Dispatch覆盖限制在Apple平台之后 libdispatch
也是开源的,目标是linux,但这回答了我最初的问题。
编辑:能够通过swift邮件列表确认调度叠加确实依赖于objective-c运行时。有一些工作可以为非Darwin平台实现它们,但不保证时间安排。
看看 Swift 3 Evolution Github页面。它们列出了对语言的所有建议更改,并将它们与已实现的更改和未实现的更改分开。提案 SE-0088:为swift 3命名现代化libdispatch 正如许多其他变化一样,它位于“尚未实施的列表”中。
就数据和日期而言,我不能说,因为我认为这是即将到来的核心库的一部分,我还没有能够详细研究那些。也许你可以检查一下 Swift Core-Libs Github 虽然状态页面引用了NSData和NSDate上的工作,但是没有提到更新的数据类型。