问题 Swift3 Linux vc Mac DispatchQueue


根据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分支与开源分支的变化?


10706
2018-06-20 17:03


起源

如果我没弄错的话,日期,网址等类型在这里: github.com/apple/swift/tree/master/stdlib/public/SDK/Foundation 并发送到这里: github.com/apple/swift/tree/master/stdlib/public/SDK/Dispatch - Brad Larson♦


答案:


从Swift 3.0发布版本开始,GCD在Linux上很简单 import Dispatch这有点令人困惑,因为在iOS / macOS上不需要它 Dispatch 默认情况下导入模块。


12
2017-10-24 07:51





谢谢 布拉德拉森 寻找 基础 和 调度 在源中叠加。根据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平台实现它们,但不保证时间安排。


3
2018-06-21 04:19





看看 Swift 3 Evolution Github页面。它们列出了对语言的所有建议更改,并将它们与已实现的更改和未实现的更改分开。提案 SE-0088:为swift 3命名现代化libdispatch 正如许多其他变化一样,它位于“尚未实施的列表”中。

就数据和日期而言,我不能说,因为我认为这是即将到来的核心库的一部分,我还没有能够详细研究那些。也许你可以检查一下 Swift Core-Libs Github 虽然状态页面引用了NSData和NSDate上的工作,但是没有提到更新的数据类型。


0
2018-06-21 01:27