webentwicklung-frage-antwort-db.com.de

Ist SwiftUI abwärtskompatibel mit iOS 12.x und älter?

Wenn ich eine mit SwiftUI erstellte App habe, funktioniert sie für iOS unter iOS 13?

105
Ted

Ich habe es gerade in Xcode 11 ausgecheckt und kann bestätigen, dass es nicht abwärtskompatibel ist, wie in der View-Implementierung von SwiftUI zu sehen ist:

/// 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 }
}
71
fredpi

SwiftUI und Combine use Opaque-Return-Types in Swift 5.1 und da Opaque-Return-Typen (neben anderen Funktionen) in Swift 5.1 implementiert sind und aufgrund der Art ihrer Implementierung nicht wie [wieder bereitgestellt werden können) ~ # ~] dsl [~ # ~] oder Property-Wrappers bis Swift 5.0 und weil iOS 13 ist das einzige iOS SDK, das Swift 5.1 Laufzeit im Betriebssystem enthält, daher lautet die Antwort auf die Frage nein und SwiftUI und Combine können in früheren Versionen von iOS nicht verwendet werden.

Es sei denn, Apple bietet eine Möglichkeit, Swift 5.1 Laufzeit (oder zukünftige Versionen) mit der Anwendung zu bündeln, wie dies früher bei früheren Swiftder Fall war. _ Versionen, aber da dies die App-Größe erhöhen und das gesamte System wieder mit Overhead versorgen wird, bezweifle ich, dass dies jemals passieren wird.

Es könnte abwärtskompatibel sein

Swift 5.1 ist noch nicht veröffentlicht und SwiftUI verwendet Funktionen wie ndurchsichtige Rückgabetypen, DSL , propertyDelegate (in WWDC eingeführt als propertyWrapper) und etc. , die verfügbar sein wird only in Swift 5.1. Da Swift 5 binär stabil ist, war es vermutlich nicht möglich, eingebettete Swift-Frameworks in Xcode11 zu verwenden. Daher haben sie diese Funktionen im Kern von Cocoa erneut implementiert und sie als iOS13 + markiert, das bis Swift 5.1 wird veröffentlicht.

Meine Annahmen basieren auf der Tatsache, dass Ordered Collection Diffing und DSL = werden in Swift 5.1 verfügbar sein und haben keine Korrelationen mit Xcode oder Apples Ökosystem, aber sie sind auch als @available(iOS13,...) gekennzeichnet. Dies bedeutet, dass sie alles mit Swift 5.1-Funktionen mit dem iOS-Verfügbarkeitsattribut markieren mussten. Einige von ihnen werden entfernt, sobald Swift 5.1 veröffentlicht wird, aber wir können uns über SwiftUI und Combine nicht sicher sein, es sei denn, Apple sagt etwas anderes. Dies wird auch im Vorschlag von DSL erwähnt:

Implementierung: PR . Beachten Sie, dass die Implementierung in der Xcode-Entwicklervorschau eine etwas einfachere Transformation verwendet als die hier beschriebene. Das verknüpfte PR spiegelt die Implementierung in der Vorschau wider, befindet sich jedoch in der aktiven Entwicklung, um diesem Vorschlag zu entsprechen.

Die Einschränkung der Rückwärtsinkompatibilität wird möglicherweise aufgehoben, wenn Swift 5.1 veröffentlicht wird, aber es ist wirklich muss durch Apple team geklärt werden.

25
farzadshbfn

Ich denke nicht, da alle Bibliotheken bereits für iOS 13 oder höher kommentiert sind.

In der Dokumentation erwähnt Apple erwähnt deutlich die unterstützten Versionen:

  • iOS13.0 + Beta
  • macOS10.15 + beta
  • tvOS 13.0+ Beta
  • watchOS 6.0+ Beta

(enter image description here

25

Nein. SwiftUI erfordert ein Bereitstellungsziel von iOS 13 oder höher, macOS 10.15 oder höher, tvOS 13 oder höher oder watchOS 6 oder höher. Das Framework enthält viele neue Typen, die in älteren Versionen der Betriebssysteme nicht vorhanden sind.

12
rob mayoff

Wenn Sie für die Unterstützung des iPhone und nicht des iPad fotografieren, können Sie davon ausgehen, dass die meisten Benutzer innerhalb von 12 bis 18 Monaten (beginnend mit dem Veröffentlichungsdatum) ein Upgrade auf iOS 13 durchführen. Vielleicht 85-90%? (Ich denke Apple sagte zu diesem Zeitpunkt, dass es immer noch 15% der Leute gibt, die nicht auf iOS 12 sind). Das ist jedoch noch eine ganze Weile, bis Sie SwiftUI-Apps nicht sofort bereitstellen können oder riskieren, viele Benutzer zu entfremden.

Abhängig von den anderen 10-15% kann dies auch bedeuten, dass viele Benutzer (und $$) für Sie auf dem Tisch liegen bleiben.

Wenn Sie auch das iPad unterstützen, ist es schwieriger, weil die Leute ihre iPads nicht so oft aktualisieren. Es gibt viele iPad 2s zusammen mit iPads der 3. und 4. Generation, die noch in freier Wildbahn sind, nur 10.3.3 haben und nicht mehr upgraden können. Die Leute werden einfach nicht aufstehen und zwischen 400 und 1.000 US-Dollar für ein neues iPad bezahlen, wenn ihr iPad einwandfrei funktioniert.

Es gibt immer Platz und die Notwendigkeit, die App zu aktualisieren, zu verbessern, Fehler zu beheben, die nicht unbedingt etwas mit iOS 13 zu tun haben. Das heißt, Sie müssen einen Fehler finden, von dem Sie vorher nichts wussten, was viele Benutzer unglücklich macht. . nicht auf der neuesten iOS-Version. und wir haben noch nicht einmal über Unternehmenskunden gesprochen, die von vielen Entwicklergeschäften unterstützt werden. In diesem Bereich gibt es aus verschiedenen Gründen viel mehr Pushback für iOS-Updates.

Bevor Sie sich also für iOS 13 und SwiftUI begeistern (was Sie unbedingt tun sollten, weil es fantastisch ist), wird dies in der realen Welt außerhalb des Silicon Valley nicht genau mit den Erwartungen des Durchschnittsverbrauchers übereinstimmen und Sie müssen Unterstützung leisten ältere Geräte und müssen, weil es einfach zu viele Menschen gibt, die Sie entfremden würden.

10
cspam

Basierend auf Apple Dokumentation ist es leider nur ab iOS 13 verfügbar.

https://developer.Apple.com/documentation/swiftui/

8
Armands L.

Es ist kompatibel mit iOS 13+. Hier ist ein Link zu seiner Dokumentation.

https://developer.Apple.com/documentation/swiftui/


Auch Xcode 10 unterstützt es nicht. Sie müssen Xcode 11 verwenden, der sich ab dem 3. Juni 2019 in der Beta befindet. https://developer.Apple.com/tutorials/swiftui/creating-and-combining-views

8
mahan

funktioniert nur für ios 13 oder höher

sie können Ihren SwiftUI Code weiterhin mit anhängen

@available(iOS 13.0, *)
4
Wendy Liga

Wie jeder gesagt hat, wird es nicht abwärtskompatibel mit älteren iOS-Versionen sein. Angesichts der Tatsache, dass Apple hat durchweg eine hohe Installationsbasis für das neueste iOS und iOS 13 erfordert iPhone 6S oder höher, iPad Air 2 oder höher, das neue iPad mini 4 und iPhone SE Die überwiegende Mehrheit der Benutzer kann iOS 13 installieren und schöne SwiftUI-Apps genießen.

3
welshiebiff

Wie alle Leute vor mir erwähnt haben, ist es sehr klar, dass iOS 13 oder höher erforderlich sein wird. Als neuer iOS-Entwickler war ich jedoch besorgt darüber, inwieweit ich SwiftUI im Vergleich zu UIKit übernehmen sollte. Ich habe bereits einige kleine Projekte mit UIKit erstellt und bin damit irgendwohin fortgeschritten.

Aber als SwiftUI begann, wie man sie kombiniert. Der Artikel im folgenden Link stellt alles in einen Kontext: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or -both

Meine einzige Sorge ist jetzt, dass ich bei Xcode 11 festgestellt habe, dass ein Xcode-Projekt nicht sowohl Storyboards als auch SwiftUI kombinieren kann.

2