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




ios12 (6)

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


Il pourrait être rétro-compatible

Swift 5.1 n'est pas encore disponible et SwiftUI utilise des fonctionnalités telles que les types de retour opaques , DSL , propertyDelegate (introduit dans WWDC en tant que propertyWrapper ), etc., qui ne seront disponibles que dans Swift 5.1. Etant donné que Swift 5 est stable en binaire, je suppose qu’il n’était pas possible d’utiliser des frameworks Swift intégrés dans Xcode11; ils ont donc ré-implémenté ces fonctionnalités dans le noyau de Cocoa et les ont marquées comme iOS13 + disponibles jusqu’à la sortie de Swift 5.1.

Mes hypothèses sont basées sur le fait que, Ordered Collection Diffing 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 les fonctionnalités de Swift 5.1 avec l'attribut de disponibilité iOS. Certains d'entre eux seront supprimés une fois que Swift 5.1 sera publié, mais nous ne pouvons pas être certains de SwiftUI et de Combine sauf indication contraire d'Apple. Ceci est également mentionné dans la proposition de DSL :

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 PR lié reflète la mise en œuvre dans l'aperçu mais est en cours de développement pour correspondre à cette proposition.

Donc, la limitation des incompatibilités en amont pourrait être levée lorsque Swift 5.1 sera publié, mais cela doit être clarifié par l'équipe Apple .




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


Non. documentation nécessite une cible de déploiement iOS 13 ou supérieur, macOS 15 ou supérieur, tvOS 13 ou supérieur, ou watchOS 6 ou supérieur. La structure contient de nombreux nouveaux types qui n'existent pas sur les anciennes versions des systèmes d'exploitation.


Si vous souhaitez utiliser un iPhone et non un iPad, la plupart des utilisateurs passeront à iOS 13 dans un délai de 12 à 18 mois (à compter de la date de publication). Peut-être 85-90%? (Je pense qu'Apple a déclaré qu'il y avait encore 15% de personnes qui n'étaient pas sur iOS 12 à ce stade-ci.) Cela reste encore un bon bout de temps avant que vous ne puissiez déployer les applications SwiftUI immédiatement, sinon vous risquez d'aliéner de nombreux utilisateurs.

De plus, selon les 10-15% restants, cela pourrait signifier beaucoup d'utilisateurs (et $$) pour vous.

Si vous prenez également en charge l'iPad, c'est plus compliqué, car les utilisateurs ne mettent pas leur iPad à niveau aussi souvent. Il y a beaucoup d'iPad 2 ainsi que des iPads de 3ème et 4ème 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 aller payer entre 400 $ et 1 000 $ pour un nouvel iPad lorsque le leur fonctionne parfaitement.

Il y a toujours de la place et un besoin pour mettre à jour l'application, la rendre meilleure, réparer les bugs, cela n'a rien à voir avec iOS 13. C'est-à-dire trouver un bogue que vous ne connaissiez pas auparavant qui rendait malheureux beaucoup d'utilisateurs. Pas sur la dernière version iOS. et nous n’avons même pas parlé de clients entreprises / entreprises pris en charge par de nombreux magasins de développement. Il y a beaucoup plus de refoulement 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), dans le monde réel, en dehors de Silicon Valley, cela ne correspondra pas exactement à ce que le consommateur moyen attend et vous devrez prendre en charge appareils plus anciens et doivent parce qu'il y a trop de gens que vous seriez aliénant.





swiftui