SwiftUI向后兼容iOS 12.x及更高版本吗?
如果我有一个用SwiftUI制作的应用程序,它是否适用于iOS 13以下的iOS?它与iOS 13+兼容。这里是它的文档链接SwiftUI向后兼容iOS 12.x及更高版本吗?,swift,ios12,swiftui,Swift,Ios12,Swiftui,如果我有一个用SwiftUI制作的应用程序,它是否适用于iOS 13以下的iOS?它与iOS 13+兼容。这里是它的文档链接 即使是Xcode 10也不支持它。您需要使用截至2019年6月3日的测试版Xcode 11。 不幸的是,根据苹果的文档,它只能从iOS 13开始提供 否。要求部署目标为iOS 13或更高版本、macOS 10.15或更高版本、tvOS 13或更高版本或watchOS 6或更高版本。该框架包含许多旧版OSs上不存在的新类型。我刚刚在Xcode 11中检查了它,可以确认它
即使是Xcode 10也不支持它。您需要使用截至2019年6月3日的测试版Xcode 11。
不幸的是,根据苹果的文档,它只能从iOS 13开始提供
否。要求部署目标为iOS 13或更高版本、macOS 10.15或更高版本、tvOS 13或更高版本或watchOS 6或更高版本。该框架包含许多旧版OSs上不存在的新类型。我刚刚在Xcode 11中检查了它,可以确认它不会向后兼容,如SwiftUI的
视图实现所示:
/// A piece of user interface.
///
/// You create custom views by declaring types that conform to the `View`
/// protocol. Implement the required `body` property to provide the content
/// and behavior for your custom view.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View : _View {
/// The type of view representing the body of this view.
///
/// When you create a custom view, Swift infers this type from your
/// implementation of the required `body` property.
associatedtype Body : View
/// Declares the content and behavior of this view.
var body: Self.Body { get }
}
我不这么认为,因为所有库都已经为iOS 13或更高版本添加了注释
此外,在报告中,苹果明确提到了受支持的版本:
- iOS13.0+测试版
- macOS10.15+测试版
- TVOS13.0+测试版
- watchOS 6.0+测试版
正如大家所说,它将无法向后兼容较旧的iOS版本。但考虑到苹果最新iOS的安装基数一直很高,同时考虑到iOS 13需要iPhone 6S或更高版本、iPad Air 2或更高版本、新的iPad mini 4和iPhone SE。绝大多数用户将能够安装iOS 13并享受可爱的SwiftUI应用程序。如果你是为了支持iPhone而不是iPad,你可能会预期大多数用户将在12-18个月内(从发布日期开始)升级到iOS 13。也许85-90%?(我认为苹果公司表示,目前仍有15%的用户不使用iOS 12)这还需要很长一段时间,但你无法立即部署SwiftUI应用程序,否则可能会疏远很多用户
也取决于其他10-15%是什么,这可能意味着你会有很多用户(和$$)留在桌面上
如果你也支持iPad,那就更棘手了,因为人们不经常升级他们的iPad。还有很多iPad2以及第三代和第四代iPads仍在市场上,它们只有10.3.3版本,无法升级。当他们的iPad工作得非常好时,人们不会站起来花400-1000美元买一台新的iPad
总是有空间和需要更新应用程序,使其更好,修复bug,这与iOS 13无关。i、 e.发现一个你以前不知道的bug,这会让很多用户不高兴。。不在最新的iOS版本上。我们甚至没有讨论过很多开发商店支持的企业/公司客户。在这一领域,由于各种原因,iOS更新会受到更多的阻碍
所以,在你对iOS 13和SwiftUI感到兴奋之前(你绝对应该这么做,因为它太棒了),回到现实世界,硅谷之外,这与普通消费者的期望并不完全一致,你需要支持旧设备,因为你会疏远太多的人 SwiftUI和组合在Swift 5.1中使用不透明返回类型,并且由于不透明返回类型(以及其他功能)在Swift 5.1中实现,并且由于其实现的性质,它们不能重新部署到Swift 5.0(与DSL或属性包装不同,),并且由于iOS 13是最早的iOS SDK,在操作系统中包含Swift 5.1运行时,因此问题的答案是否定的,SwiftUI和Combine不能在早期版本的iOS上使用
除非苹果提供了一种方法,可以像以前的Swift版本一样,将Swift 5.1运行时(或未来版本)与应用程序捆绑在一起,但由于它会增加应用程序大小,并再次增加整个系统的开销,我怀疑这种情况是否会发生
它可能是向后兼容的
Swift 5.1尚未发布,SwiftUI
使用以下功能,(在WWDC中作为PropertyRapper引入)等等,在Swift 5.1中只可用。由于Swift 5是二进制稳定的,我想在Xcode11中不可能使用嵌入式Swift框架,因此他们在Cocoa的核心中实现了这些功能,并将它们标记为iOS13+,直到Swift 5.1发布
我的假设基于这样一个事实,即Swift 5.1将提供,并且与Xcode或苹果的生态系统没有关联,但它们也标记为@available(iOS13,…)
。这意味着他们必须用iOS availability属性标记使用Swift 5.1功能的所有内容。一旦Swift 5.1发布,其中一些功能将被删除,但我们无法确定是否有SwiftUI
和Combine
,除非苹果另有说明。这也在我们的提案中提到:
实现:。请注意,Xcode developer预览中的实现使用了比此处描述的更简单的转换。链接的实现反映了预览中的实现,但正在进行活动开发以匹配此建议
所以,当Swift 5.1发布时,向后不兼容限制可能会取消,但它确实需要苹果团队澄清。
仅适用于ios 13或更高版本
您仍然可以使用附加SwiftUI
代码
@available(iOS 13.0, *)
如果您仍然在Xcode 11下使用Xcode,并且拥有SwiftUI代码,那么可以使用
#if canImport(SwiftUI)
...
#endif
这可以解决在Xcode 11下使用Xcode编译时的问题,正如我之前提到的,很明显它需要iOS 13或更高版本。但是作为一名新的iOS开发人员,我担心与UIKit相比,我应该在多大程度上采用SwiftUI。我已经用UIKit构建了一些小项目,