web-dev-qa-db-fra.com

SwiftUI est-il rétrocompatible avec iOS 12.x et les versions antérieures?

Si j'ai une application créée avec SwiftUI, cela fonctionnera-t-il pour iOS sous iOS 13?

105
Ted

Je viens de le vérifier dans Xcode 11 et je peux confirmer qu'il ne sera pas rétrocompatible, comme on peut le voir dans l'implémentation View de 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 }
}
71
fredpi

SwiftUI et Combinez utilisez Opaque -Return-Types dans Swift 5.1 et depuis Opaque-Return-Types (avec d'autres fonctionnalités) sont implémentés dans Swift 5.1 et en raison de la nature de leur implémentation, ils ne peuvent pas être déployés à nouveau comme [~ # ~] dsl [~ # ~] ou Wrappers de propriétés à Swift 5.0 , et parce que iOS 13 est le seul SDK iOS qui contient le runtime Swift 5.1 dans le système d'exploitation, donc la réponse à la question est non et SwiftUI et Combiner ne peut pas être utilisé sur les versions antérieures d'iOS.

À moins que Apple fournit un moyen de regrouper le runtime Swift 5.1 (ou les versions futures) avec l'application comme il le faisait auparavant. faire avec les versions antérieures Swift, mais comme cela augmentera la taille de l'application et ajoutera de nouveau des frais généraux à l'ensemble du système, je doute que cela se produise un jour.

Il pourrait être rétrocompatible

Swift 5.1 n'est pas encore sorti et SwiftUI utilise des fonctionnalités telles que types de retour opaques, DSL , propertyDelegate (introduit dans WWDC comme propertyWrapper) et etc , qui sera disponible uniquement dans Swift 5.1. Puisque Swift 5 est stable binaire, je suppose qu'il n'était pas possible d'utiliser des cadres Swift intégrés à l'intérieur de Xcode11, donc ils ont ré-implémenté ces fonctionnalités dans le cœur de Cocoa et les ont marquées comme iOS13 + disponibles jusqu'à Swift 5.1 est publié .

Mes hypothèses sont basées sur le fait que, Collection ordonnée différente et DSL = vont être disponibles dans Swift 5.1 et n'ont aucune corrélation avec Xcode ou l'écosystème d'Apple, mais ils sont également marqués comme @available(iOS13,...). Cela signifie qu'ils devaient tout marquer en utilisant Swift 5.1 fonctionnalités avec l'attribut de disponibilité iOS. Certains d'entre eux seront supprimés une fois Swift 5.1 sera publié, mais nous ne peut pas être sûr de SwiftUI et Combine sauf si Apple dit le contraire. Ceci est également mentionné dans DSL proposition de:

Implémentation: PR . Notez que l'implémentation dans l'aperçu du développeur Xcode utilise une transformation un peu plus simple que celle décrite ici. Le lien PR reflète la mise en œuvre dans l'aperçu mais est en cours de développement actif pour correspondre à cette proposition.

Ainsi, la limitation de l'incompatibilité en arrière peut être levée lorsque Swift 5.1 est publié, mais il faut vraiment être clarifié par Apple team .

25
farzadshbfn

Je ne pense pas, car toutes les bibliothèques sont déjà annotées pour iOS 13 ou supérieur.

De plus, dans la documentation , Apple mentionne clairement les versions prises en charge:

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

enter image description here

25

Non. SwiftUI nécessite une cible de déploiement d'iOS 13 ou version ultérieure, macOS 10.15 ou version ultérieure, tvOS 13 ou version ultérieure, ou watchOS 6 ou version ultérieure. Le cadre contient de nombreux nouveaux types qui n'existent pas sur les anciennes versions des systèmes d'exploitation.

12
rob mayoff

Si vous photographiez pour prendre en charge l'iPhone et non l'iPad, vous pouvez probablement vous attendre à ce que la plupart des utilisateurs passent à iOS 13 dans les 12 à 18 mois (à compter de la date de sortie). Peut-être 85-90%? (Je pense que Apple a dit à ce stade, il y a encore 15% de personnes qui ne sont pas sur iOS 12) Cela fait quand même un bon moment où vous ne pourrez pas déployer les applications SwiftUI tout de suite ou bien risquer d'aliéner beaucoup d'utilisateurs.

En fonction également des 10 à 15% restants, cela pourrait signifier beaucoup d'utilisateurs (et $$) pour vous laissés sur la table.

Si vous prenez également en charge l'iPad, c'est plus délicat car les gens ne mettent pas à jour leur iPad aussi souvent. Il y a beaucoup d'iPad 2 ainsi que des iPad de 3e et 4e génération encore en liberté, qui n'ont que 10.3.3 et ne peuvent plus être mis à niveau. Les gens ne vont tout simplement pas se lever et payer entre 400 $ et 1 000 $ pour un nouvel iPad quand le leur fonctionne parfaitement.

Il y a toujours de la place et un besoin de mettre à jour l'application, de l'améliorer, de corriger les bogues, qui n'ont pas nécessairement quelque chose à voir avec iOS 13. C'est-à-dire trouver un bogue que vous ne connaissiez pas auparavant qui rend beaucoup d'utilisateurs mécontents. pas sur la dernière version d'iOS. et nous n'avons même pas parlé des clients entreprises/entreprises que de nombreux magasins de développement prennent en charge. theres beaucoup plus de pushback sur les mises à jour iOS pour diverses raisons dans ce domaine.

Donc, avant de vous enthousiasmer pour iOS 13 et SwiftUI (ce que vous devriez absolument parce que c'est génial), de retour dans le monde réel, en dehors de la Silicon Valley, cela ne va pas exactement s'aligner sur ce que le consommateur moyen attend et vous devrez prendre en charge les appareils plus anciens et le doivent parce qu'il y a trop de gens que vous aliéneriez.

10
cspam

Basé sur Apple documentation, il n'est disponible qu'à partir d'iOS 13, malheureusement.

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

8
Armands L.

Il est compatible avec iOS 13+. Voici le lien vers sa documentation.

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


Même Xcode 10 ne le prend pas en charge. Vous devez utiliser Xcode 11 qui est en version bêta à partir du (3 juin 2019). https://developer.Apple.com/tutorials/swiftui/creating-and-combining-views

8
mahan

ne fonctionne que pour ios 13 ou version ultérieure

vous pouvez toujours joindre votre code SwiftUI en utilisant

@available(iOS 13.0, *)
4
Wendy Liga

Comme tout le monde l'a dit, il ne sera pas rétrocompatible avec les anciennes versions d'iOS. Mais étant donné que Apple a toujours une base d'installation élevée de leur dernier iOS, et également étant donné qu'iOS 13 nécessite iPhone 6S ou version ultérieure, iPad Air 2 ou version ultérieure, le nouvel iPad mini 4 et iPhone SE La grande majorité des utilisateurs pourront installer iOS 13 et profiter de jolies applications SwiftUI.

3
welshiebiff

Comme toutes les personnes avant moi l'ont mentionné, il est très clair qu'il faudra iOS 13 ou une version ultérieure. Mais en tant que nouveau développeur iOS, je me demandais dans quelle mesure je devrais adopter SwiftUI par rapport à UIKit. J'ai déjà construit quelques petits projets avec UIKit et je suis allé quelque part avec lui.

Mais comme SwiftUI a commencé, comment les combiner. L'article dans le lien suivant met tout en contexte: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or -les deux

Ma seule préoccupation maintenant est que j'ai remarqué avec Xcode 11 qu'un projet Xcode ne peut pas combiner à la fois Storyboards et SwiftUI.

2