630 Stimmen

Funktionieren Swift-basierte Anwendungen auf OS X 10.9/iOS 7 und niedriger?

Werden auf OS X 10.9 (Mavericks)/iOS 7 und niedriger basierende Anwendungen funktionieren?

Zum Beispiel habe ich einen Computer mit OS X 10.8 (Mountain Lion), und ich frage mich, ob eine Anwendung, die ich in Swift schreibe, darauf ausgeführt werden kann.

Oder was muss ich tun, um eine Swift-Anwendung unter Mac OS zu erstellen?

524voto

Leandros Punkte 16612

Ich habe es gerade für Sie getestet. Swift-Anwendungen kompilieren in Standard-Binärdateien und können auf OS X 10.9 und iOS 7 ausgeführt werden.


Einfache Swift-Anwendung, die für Tests verwendet wird:

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 = "Ich bin ein Test-Label"
    controller.view.addSubview(label)

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

199voto

Greg Parker Punkte 7884

Swift-Code kann auf OS X 10.9 und iOS 7.0 bereitgestellt werden. Es stürzt normalerweise beim Start auf älteren Betriebssystemversionen ab.

104voto

Ben Gottlieb Punkte 84876

Apple hat angekündigt, dass Swift-Apps abwärtskompatibel mit iOS 7 und OS X Mavericks sein werden. Die WWDC-App ist in Swift geschrieben.

101voto

Anil Varghese Punkte 42669

Aktualisierung - Gemäß Xcode 6 Beta 4

Mindestbereitstellungsziel für iOS 7 und OS X 10.9

Der Swift-Compiler und Xcode setzen jetzt ein Mindestbereitstellungsziel von iOS 7 oder OS X Mavericks voraus. Wenn ein früheres Bereitstellungsziel festgelegt wird, führt dies zu einem Build-Fehler.

Aus den Veröffentlichungshinweisen von Xcode 6

Daher gilt meine vorherige Antwort (siehe unten) nicht mehr für weitere Entwicklungen. Swift wird nicht mehr für iOS 6 und darunter verfügbar sein


Ein Swift-Anwendung kann auf iOS 6 ausgeführt werden. Obwohl viele behaupten, dass Swift nur iOS 7+ und OS X 10.9+ unterstützt, ist dies meiner Erfahrung nach nicht der Fall.

Ich habe eine einfache Anwendung komplett in Swift geschrieben auf einem iOS 6-Gerät getestet. Es funktioniert einwandfrei. Wie Apple sagt, ist Swift-Code binärkompatibel mit Objective-C-Code. Er verwendet den gleichen Compiler und Laufzeitumgebung, um das Binärprogramm zu erstellen.

Hier ist der Code, den ich getestet habe:

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")
    }
}

Es handelt sich um eine einfache Anwendung, die nur programmatisch einen Button hinzufügt. Meine Anwendung enthält nur zwei Dateien, AppDelegate.swift und ViewController.swift.

Wenn Sie also keine neuen APIs verwenden, die im Rahmen des iOS 8 SDK hinzugefügt wurden oder einige spezifische APIs von Swift (entsprechende API ist nicht für Objective-C verfügbar), wird Ihre Anwendung nahtlos auf iOS 6 oder später (getestet und funktioniert), sogar auf iOS 5 (nicht getestet) funktionieren. Die meisten APIs in Swift sind lediglich der Ersatz für bereits vorhandene Objective-C APIs. Tatsächlich sind sie im Binärformat identisch.

Hinweis: Gemäß Xcode 6 Beta 4 sollte das Bereitstellungsziel für Swift-Anwendungen iOS 7 oder OS X 10.9 sein (siehe die obige Aktualisierung). Daher wird Swift nicht mehr für iOS 6 und älter verfügbar sein


34voto

Durai Amuthan.H Punkte 30175

Kurz gesagt:

Swift-basierte Anwendungen können bis zurück zu OS X Mavericks oder iOS 7 mit derselben App abzielen.

Wie ist das möglich ?

Xcode integriert eine kleine Swift-Laufzeitbibliothek in das Bundle Ihrer App. Da die Bibliothek eingebettet ist, verwendet Ihre App eine konsistente Version von Swift, die auf vergangenen, gegenwärtigen und zukünftigen Betriebssystemversionen läuft.

Warum sollte ich dieser Antwort vertrauen?

Weil ich diese Antwort nicht von einem Apple-Mitarbeiter auf Twitter gehört habe oder weil ich einfach "Hallo Welt" geschrieben und getestet habe.

Ich habe es von dem Apple Developer Blog übernommen.

Sie können also darauf vertrauen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X