145 votes

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

Si j'ai une application réalisée avec SwiftUI, fonctionnera-t-elle pour les iOS inférieurs à iOS 13 ?

1 votes

Pourquoi n'essayez-vous pas ? La version bêta de Xcode 11 est disponible en téléchargement, et les tutoriels sont ici developer.apple.com/tutorials/swiftui .

1 votes

Quelqu'un sait-il pourquoi ma réponse a été supprimée par @Jean-François Fabre ?

12 votes

NON, SwiftUI ne fonctionne pas avec iOS 12.x et plus.

105voto

fredpi Points 1433

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'écran de SwiftUI. View mise en œuvre :

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

7 votes

Encore au moins 5 ans ? Vous n'utilisez donc pour l'instant que les API disponibles dans iOS 7 et moins ?

5 votes

Le plus étrange est que vous pouvez créer une application SwiftUI avec xcode 11 sur Mojave (10.4) qui ne fonctionnera que sur Catalina (10.5).

36voto

farzadshbfn Points 1273

SwiftUI et Combinez utiliser Opaque-Return-Types en Swift 5.1 et puisque les Opaque-Return-Types (ainsi que d'autres fonctionnalités) sont implémentés en Swift 5.1 et en raison de la nature de leur implémentation, ils ne peuvent pas être redéployés en Swift 5.0 (contrairement à DSL ou Enveloppeurs de propriété ), et parce qu'iOS 13 est le premier SDK iOS qui contienne Swift 5.1 runtime dans le système d'exploitation, donc la réponse à la question est non et SwiftUI et Combinez ne peut pas être utilisé sur les versions antérieures d'iOS.

À moins qu'Apple ne fournisse un moyen de regrouper les données. Swift 5.1 (ou les futures versions) avec l'application comme cela se faisait avec les versions antérieures de Swift, mais comme cela augmentera la taille de l'application et ajoutera à 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 , Délégué de propriété (présenté à la WWDC comme propertyWrapper ), etc., qui seront disponibles uniquement dans Swift 5.1. Comme Swift 5 est binairement stable, je suppose qu'il n'était pas possible d'utiliser les swift-frameworks intégrés dans Xcode11, d'où la réimplémentation de ces fonctionnalités dans le noyau de Cocoa et leur marquage comme disponibles pour iOS13+ jusqu'à la sortie de Swift 5.1.

Mes hypothèses sont basées sur le fait que, Collection commandée Diffing et DSL seront 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 en tant que @available(iOS13,...) . Cela signifie qu'ils ont dû marquer tout ce qui utilise les fonctionnalités de Swift 5.1 avec l'attribut de disponibilité iOS. Certaines d'entre elles seront supprimées une fois Swift 5.1 publié, mais nous ne pouvons pas en être sûrs. SwiftUI et Combine sauf si Apple dit le contraire. Ceci est également mentionné dans DSL La proposition de la Commission :

Mise en œuvre : 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 l'implémentation dans l'aperçu mais est en cours de développement actif pour correspondre à cette proposition.

~~

Ainsi, la limitation de l'incompatibilité rétrograde pourrait être levée lors de la sortie de Swift 5.1, mais elle n'est pas vraiment doit être clarifié par l'équipe Apple .

34voto

ktr kathir Points 271

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

De même, dans le 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

17voto

rob mayoff Points 124153

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

0 votes

Il est possible d'utiliser SwiftUI sur iOS 13 tout en prenant en charge un objectif de déploiement inférieur. Veuillez vérifier stackoverflow.com/a/58372597/840742

14voto

cspam Points 433

Si vous voulez 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 qu'Apple a dit qu'à ce stade, il y a encore 15% de personnes qui ne sont pas sous iOS 12). Cela fait quand même un certain temps que vous ne pourrez pas déployer des applications SwiftUI tout de suite, sous peine de vous aliéner beaucoup d'utilisateurs.

De plus, en fonction de ce que représentent les 10 à 15 % restants, cela pourrait signifier pour vous un grand nombre d'utilisateurs (et de dollars) 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 et d'iPad de 3ème et 4ème génération encore en circulation, qui n'ont que la version 10.3.3 et ne peuvent plus être mis à jour. Les gens ne vont tout simplement pas se lever et payer entre 400 et 1 000 dollars pour un nouvel iPad alors que le leur fonctionne parfaitement bien.

Il est toujours possible et nécessaire de mettre à jour l'application, de l'améliorer, de corriger des bogues, qui n'ont pas nécessairement à voir avec iOS 13. Par exemple, trouver un bogue dont vous n'étiez pas au courant et qui rend beaucoup d'utilisateurs mécontents pas sur la dernière version d'iOS. Et nous ne parlons même pas des entreprises / clients professionnels que beaucoup d'ateliers de développement prennent en charge.

Avant que vous ne vous enthousiasmiez pour iOS 13 et SwiftUI (ce que vous devez absolument faire parce que c'est génial), dans le monde réel, en dehors de la Silicon Valley, cela ne correspond pas exactement à ce que le consommateur moyen attend et vous devrez prendre en charge des appareils plus anciens, car il y a trop de gens que vous aliéneriez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X