在 WWDC 2019 session 402 " What's New in Swift " 中,演讲者在讨论 Swift 5.1 功能Opaque Result Type (SE-0244)时提到该功能仅适用于新操作系统:
需要新的 Swift 运行时支持
适用于 macOS Catalina、iOS 13、tvOS 13、watchOS 6 及更高版本
Guard 在部署到早期操作系统版本时使用可用性检查
在 Xcode 11 中,如果我在针对 iOS 11 及更高版本时使用此功能编写代码,我不会收到任何构建错误(或警告)。我没有在if #available(iOS 13.0, *)
检查中包装任何代码。例如:
protocol Shape { }
class Square: Shape { }
class Triangle: Shape { }
func foo() -> some Shape {
return Square()
}
然后foo()
从我的应用程序中的一些代码调用。
如果此代码在 iOS 13 之前的设备上运行会发生什么?缺少构建错误本身是错误吗?是否有明确的清单列出哪些 Swift 5.1 功能需要新的运行时支持,以及特定的操作系统版本?