Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI向后兼容iOS 12.x及更高版本吗?_Swift_Ios12_Swiftui - Fatal编程技术网

SwiftUI向后兼容iOS 12.x及更高版本吗?

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中检查了它,可以确认它

如果我有一个用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中检查了它,可以确认它不会向后兼容,如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运行时,因此问题的答案是否定的,SwiftUICombine不能在早期版本的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构建了一些小项目,