627 votes

Les applications basées sur Swift fonctionnent-elles sur OS X 10.9/iOS 7 et inférieur ?

Les applications basées sur Swift fonctionneront-elles sur OS X 10.9 (Mavericks)/iOS 7 et inférieur ?

Par exemple, j'ai une machine qui exécute OS X 10.8 (Mountain Lion), et je me demande si une application que j'écris en Swift fonctionnera dessus.

Ou que dois-je faire pour créer une application Swift sous Mac OS ?

51 votes

En supposant que Swift soit compilé dans un exécutable " normal " et qu'aucune bibliothèque d'exécution spécifique à Swift ne soit nécessaire dans le système d'exploitation, alors oui, il devrait fonctionner sur les anciens systèmes. Mais nous ne le savons pas encore. Téléchargez Xcode 6 et essayez-le.

12 votes

Une réponse officielle sera trouvée dans la vidéo sur l'état de l'Union.

3 votes

@rmaddy Pour information : lors de la WWDC, il a été clairement indiqué dans la présentation de Swift que Swift et Objective-C ont le même runtime.

523voto

Leandros Points 5916

Je viens de le tester pour vous, les applications Swift se compilent en binaires standard et peuvent être exécutées sur OS X 10.9 et iOS 7.


Application Swift simple utilisée pour les tests :

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var controller = UIViewController()
    var view = UIView(frame: CGRectMake(0, 0, 320, 568))
    view.backgroundColor = UIColor.redColor()
    controller.view = view

    var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
    label.center = CGPointMake(160, 284)
    label.textAlignment = NSTextAlignment.Center
    label.text = "I'am a test label"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}

13 votes

Voir stackoverflow.com/questions/24007050/ - elle est en contradiction avec cette réponse (au moins la partie "ou encore plus bas").

14 votes

Je n'ai testé que iOS 7.0 et OS X 10.9. Comme indiqué dans la réponse.

0 votes

@Leandros En utilisant le mot clé var, pourquoi devons-nous taper UIViewController deux fois dans cette ligne "var controller : UIViewController = UIViewController()" ? var n'est pas identique à JavaScript/C# (si non, c'est triste) ? Est-ce un casting, mais les types d'objets sont les mêmes des deux côtés du signe égal ?

198voto

Greg Parker Points 3761

Le code Swift peut être déployé sur OS X 10.9 et iOS 7.0. Il se bloque généralement au lancement sur les versions plus anciennes du système d'exploitation.

4 votes

Greg, merci d'être venu ici pour répondre aux questions. Pouvez-vous nous dire ce qui a changé entre 10.8 et 10.9 et entre 6.x et 7.0 pour permettre l'exécution du code généré à partir de Swift ?

22 votes

Swift définit certains bits dans les métadonnées Objective-C pour marquer les classes Swift. libobjc dans OS X 10.9 et iOS 7.0 a été modifié pour ignorer ces bits en préparation de l'arrivée de Swift. Les anciennes versions d'OS seront perturbées par ces bits.

9 votes

Je BEAUCOUP J'apprécierais qu'Apple envisage de faire fonctionner les applications Swift sur les anciennes plateformes également (au moins à partir de OSX 10.7). La raison est que nous avons encore beaucoup de clients avec cet OS, et que nous ne pouvons pas commencer à développer avec Swift avant des années si 10.9 est l'OS minimum supporté !

103voto

Ben Gottlieb Points 59900

Apple a annoncé que les applications Swift seront rétrocompatibles avec iOS 7 et OS X Mavericks. L'application de la WWDC est écrite en Swift.

11 votes

Vraiment, la WWDC est écrite en Swift ???

7 votes

Oui, l'application WWDCC est écrite en Swift. Comme ils l'ont dit hier.

22 votes

Jay Freeman prétend le contraire : twitter.com/saurik/status/473785847926374400

100voto

Anil Points 13977

Mise à jour - Selon Xcode 6 Beta 4

Cible de déploiement minimale pour iOS 7 et OS X 10.9

Le compilateur Swift et Xcode imposent désormais une cible de déploiement minimale de iOS 7 ou OS X Mavericks. La définition d'une cible de déploiement antérieure entraîne l'échec de la construction.

Extrait de la note de publication de Xcode 6

Ma réponse précédente (ci-dessous) ne sera donc pas applicable à tout développement ultérieur. Swift ne sera plus disponible pour iOS6 et les versions inférieures.


Une application Swift peut être exécutée sur iOS 6. Même si beaucoup de gens disent que Swift ne supportera que iOS 7+ et OS X 10.9+, d'après mon expérience, ce n'est pas le cas.

J'ai testé une application simple écrite entièrement en Swift dans un appareil iOS 6. Elle fonctionne parfaitement bien . Comme le dit Apple, le code Swift est binairement compatible avec le code Objective-C. Il utilise le même compilateur et le même runtime pour créer le binaire.

Voici le code que j'ai testé :

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        let button   = UIButton.buttonWithType(UIButtonType.System) as UIButton
        button.frame = CGRectMake(100, 100, 100, 50)
        button.backgroundColor = UIColor.greenColor()
        button.setTitle("Test Button", forState: UIControlState.Normal)
        button.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside)

        self.view.addSubview(button)
    }

    func buttonTapped(sender: UIButton!) {
        println("buttonTapped")
    }
}

Il s'agit d'une application simple, qui consiste à ajouter un bouton de manière programmatique. Mon application ne contient que deux fichiers, AppDelegate.swift y ViewController.swift .

Ainsi, si vous n'utilisez pas les nouvelles API ajoutées dans le cadre du SDK iOS 8 ou certaines API spécifiques à Swift (l'API correspondante n'est pas disponible pour Objective-C), votre application fonctionnera de manière transparente sur iOS 6 ou ultérieur (testé et fonctionnel), même sur iOS 5 (non testé). La plupart des API de Swift ne sont que le remplacement des API Objective-C existantes. En fait, elles sont identiques en binaire.

Note : Selon Xcode 6 beta 4 pour les applications swift, la cible de déploiement doit être iOS 7 ou OS X 10.9 (voir la mise à jour ci-dessus). Swift ne sera donc plus disponible pour iOS6 et les versions inférieures.


0 votes

Comme pour les mises à jour précédentes du système, certains frameworks/classes sont abandonnés et doivent être supportés sous conditions.

0 votes

@TienDo Pas besoin de point-virgule :) Même si vous mettez par erreur (c'est une tradition), ce ne sera pas un problème.

3 votes

Mais vous pouvez toujours utiliser les points-virgules si vous le voulez vraiment. Deux déclarations dans une ligne sont séparées par un point-virgule.

30voto

Chris Pietschmann Points 13397

Swift utilise le même runtime que Objectif-C et peut même cohabiter avec Objective-C dans une même application (selon la keynote de la WWDC 2014).

Ceci devra être contrôlé/vérifié à l'aide de Xcode 6 et le nouveau SDK pour trouver une réponse définitive.

1 votes

Il semble que l'utilisation de Xcode Beta 6 vous permettra d'exécuter des applications swift sur 10.9.3, mais je ne suis pas sûr de savoir jusqu'à quand une application swift pourra fonctionner, ex 10.7 ou 10.8 ?

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