- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Xcode 13.2 Beta release notes promise 为 iOS 13 提供 Swift 并发支持。
You can now use Swift Concurrency in applications that deploy to macOS 10.15, iOS 13, tvOS 13, and watchOS 6 or newer. This support includes async/await, actors, global actors, structured concurrency, and the task APIs. (70738378)
最佳答案
将并发反向部署到较旧的操作系统版本将并发运行时库与您的应用程序捆绑在一起,并提供此功能所需的支持,就像 Swift 在 Swift 5 中的 ABI 稳定性之前使用标准库所做的那样,当时 Swift 可以随操作系统。
这捆绑了 Concurrency 的部分内容标准库的部分 (stable link) 以及一些 additional support and stubs用于功能 (stable link)。
当部署到足够新的操作系统版本以包含这些运行时功能作为操作系统的一部分时,不需要这种捆绑。
由于 iOS 15+(和相关操作系统版本)上的功能被声明需要内核更改(对于新的协作线程模型),而这些更改本身不能向后移植,因此某些功能的实现包括基于现有功能的填充程序,这些功能确实存在于这些操作系统上,但它的执行可能会有所不同,或者效率较低。
您可以在 Doug Gregor's PR 的几个地方看到这一点用于反向移植并发——在一些地方,检查 SWIFT_CONCURRENCY_BACK_DEPLOYMENT
更改某些假设不再成立或功能不存在的实现。例如,GlobalExecutor
无法对 dispatch_get_global_queue
做出假设合作(因为旧操作系统上不存在线程模型),所以在向后移植时,它必须 create its own queue用作全局合作队列。 @objc
基于 Actor 也 need to have their superclass swizzled ,这不需要在非后台部署的运行时发生。 (符号也必须在某些地方注入(inject)到 backdeploy 库中,并且某些行为必须被删除,但这有点不那么有趣。)
总体而言,没有关于反向部署和非反向部署之间确切区别的全面文档(没有阅读所有代码),但可以安全地假设反向部署的库的有效行为将是相同的,尽管可能在性能成本。
关于ios - Xcode 13.2 中为 iOS 13 宣布的 Swift Concurrency - 他们是如何实现这一目标的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69746388/
我是一名优秀的程序员,十分优秀!