Funktionieren Swift-basierte Anwendungen unter OS X 10.9 (Mavericks) / iOS 7 und niedriger?
Ich habe beispielsweise einen Computer mit OS X 10.8 (Mountain Lion) und frage mich, ob eine Anwendung, die ich in Swift schreibe, darauf ausgeführt werden kann.
Oder was sollte ich brauchen, um eine Swift-Anwendung unter Mac OS zu erstellen?
Antworten:
Ich habe es gerade für Sie getestet. Swift-Anwendungen werden in Standard-Binärdateien kompiliert und können unter OS X 10.9 und iOS 7 ausgeführt werden.
Einfache Swift-Anwendung zum Testen:
quelle
UIViewController
nach dem Doppelpunkt den Typ der Variablen darstellt und das zweite nach dem Aufruf des=
Zeichens den Konstruktor (initialisiert die Variable).Swift-Code kann unter OS X 10.9 und iOS 7.0 bereitgestellt werden. Bei älteren Betriebssystemversionen stürzt es normalerweise beim Start ab.
quelle
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.
quelle
Update - Gemäß Xcode 6 Beta 4
Ab Xcode 6 Versionshinweis
Meine vorherige Antwort (siehe unten) gilt daher nicht für weitere Entwicklungen. Swift ist für iOS6 und niedriger nicht mehr verfügbar
Eine Swift-Anwendung kann unter iOS 6 ausgeführt werden. Obwohl viele Leute sagen, 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 getestet, die vollständig in Swift auf einem iOS 6-Gerät geschrieben wurde. Es funktioniert einwandfrei . Wie Apple sagt, ist Swift-Code binär kompatibel mit Objective-C-Code. Es verwendet denselben Compiler und dieselbe Laufzeit, um die Binärdatei zu erstellen.
Hier ist der Code, den ich getestet habe:
Es ist eine einfache Anwendung, bei der nur programmgesteuert eine Schaltfläche hinzugefügt wird. Meine Anwendung enthält nur zwei Dateien
AppDelegate.swift
undViewController.swift
.Wenn Sie also keine neuen APIs verwenden, die als Teil des iOS 8 SDK hinzugefügt wurden, oder einige Swift-spezifische APIs (die entsprechende API ist für Objective-C nicht verfügbar), funktioniert Ihre Anwendung sogar nahtlos unter iOS 6 oder höher (getestet und funktionsfähig) unter iOS 5 (nicht getestet). Die meisten APIs in Swift ersetzen lediglich die vorhandenen Objective-C-APIs. Tatsächlich sind sie binär gleich.
Hinweis: Gemäß Xcode 6 Beta 4 für schnelle Apps sollte das Bereitstellungsziel iOS 7 oder OS X 10.9 sein (siehe obiges Update). Daher ist Swift für iOS6 und niedriger nicht mehr verfügbar
quelle
In Kürze:
Swift-basierte Anwendungen können mit derselben App auf OS X Mavericks oder iOS 7 zurückgreifen .
Wie ist es möglich ?
Xcode bettet eine kleine Swift-Laufzeitbibliothek in das Bundle Ihrer App ein . Da die Bibliothek eingebettet ist, verwendet Ihre App eine konsistente Version von Swift, die auf früheren, gegenwärtigen und zukünftigen Betriebssystemversionen ausgeführt wird.
Warum sollte ich dieser Antwort vertrauen?
Weil ich diese Antwort nicht sage, wie es mir ein Apfelmensch auf Twitter gesagt hat, oder ich habe Hallo Welt geschrieben und sie getestet.
Ich habe es aus dem Apple Developer Blog genommen .
Sie können dem also vertrauen.
quelle
Swift verwendet dieselbe Laufzeit wie Objective-C und kann sogar Objective-C nebeneinander in derselben Anwendung verwenden (gemäß der WWDC 2014-Keynote).
Dies muss mit Xcode 6 und dem neuen SDK überprüft werden , um eine endgültige Antwort zu finden.
quelle
Ich habe alle Antworten gelesen, die besagten: Nein, Swift funktioniert nicht mit weniger als iOS 7. Aber ich sagte JA , ich habe gerade ein Swift-Projekt erstellt, das in Xcode 5 mit 6.0-Bereitstellungsziel ausgeführt wird.
Dann läuft dieses Projekt in Simulator 6.1 gut . Mein MacOS X ist 10.9.3 , also habe ich ja gesagt, das läuft niedriger als iOS 7 mit 10.9.3 Mac OS X .
Hier ist ein Screenshot des Simulators:
Hier ist auch eine Demo
quelle
Während der Code dies bestätigt, hat Apple selbst in seiner technischen Keynote ( Status der Plattformen , Sitzung 102, um die 34-Minuten-00-Sekunden-Marke) auf der WWDC 2014 angekündigt , dass Swift unter iOS 7 und Mavericks kompatibel sein wird .
quelle
Swift-Anwendungen werden unter iOS 7 und höher unterstützt, wie in den Beta 4-Versionshinweisen angegeben.
iOS 6.0, 6.1, 7.0, 7.1, 8.0 in Xcode 6 BetaSwift-Anwendungen werden auf den Plattformen OS X 10.9 und höher unterstützt .
OS X 10.4 bis 10.10 im Bereitstellungsziel. Ich habe getestet, ob ich auf 10.5 bis 10.10 abzielen und auf 10.9.3 laufen sollquelle
Es scheint , Swift - Anwendungen nicht auf laufen OS X 10.7 . Ich habe gerade eine einfache GUI-Anwendung erstellt (eine Ansicht, ein Etikett, eine Schaltfläche), die auf Mavericks einwandfrei funktioniert. Das Basis-SDK ist auf 10.9 und das Bereitstellungsziel auf 10.7 festgelegt. Ich habe diese Anwendung aus dem DerivedData-Ordner auf meine virtuelle 10.7-Maschine kopiert und sie stürzt beim Start ab. Zeigen Sie diesen Fehler an:
Diese Nachricht ist jedoch irritierend, da diese VM sicherlich eine CoreGraphics-Bibliothek enthält. Andere Anwendungen, die CoreGraphics stark nutzen, funktionieren einwandfrei.
quelle
Dies ist der Beitrag, den ich aus dem Apple Swift-Blog gelesen habe. Er könnte hilfreich sein:
App-Kompatibilität :
Wenn Sie eine Swift-App schreiben, können Sie darauf vertrauen, dass Ihre App auch in Zukunft funktioniert. Tatsächlich können Sie mit derselben App auf OS X Mavericks oder iOS 7 zurückgreifen . Dies ist möglich, weil Xcode eine kleine Swift-Laufzeitbibliothek in das Bundle Ihrer App einbettet. Da die Bibliothek eingebettet ist, verwendet Ihre App eine konsistente Version von Swift, die auf früheren, gegenwärtigen und zukünftigen Betriebssystemversionen ausgeführt wird.
Binäre Kompatibilität und Frameworks:
Während die Laufzeitkompatibilität Ihrer App gewährleistet ist, wird sich die Swift-Sprache selbst weiterentwickeln und die Binärschnittstelle wird sich ebenfalls ändern. Aus Sicherheitsgründen sollten alle Komponenten Ihrer App mit derselben Version von Xcode und dem Swift-Compiler erstellt werden, um sicherzustellen, dass sie zusammenarbeiten.
Dies bedeutet, dass Frameworks sorgfältig verwaltet werden müssen. Wenn Ihr Projekt beispielsweise Frameworks verwendet, um Code für eine eingebettete Erweiterung freizugeben, möchten Sie die Frameworks, Apps und Erweiterungen zusammen erstellen. Es wäre gefährlich, sich auf binäre Frameworks zu verlassen, die Swift verwenden - insbesondere von Dritten. Wenn sich Swift ändert, sind diese Frameworks nicht mit dem Rest Ihrer App kompatibel. Wenn sich die binäre Schnittstelle in ein oder zwei Jahren stabilisiert, wird die Swift-Laufzeit Teil des Host-Betriebssystems und diese Einschränkung besteht nicht mehr.
quelle
Ich habe getestet, wie man eine Swift-basierte Bare-Bone-App auf einem iPod Touch-Gerät (3. Generation) ausführt. Es scheint, dass Swift-basierte Apps nicht mit iOS 5.x funktionieren, aber funktionieren Arbeit mit iOS 6.x.
Folgendes wird im Debug-Protokoll angezeigt, als ich versuchte, die Test-App mit iOS 5.0.1 zu starten:
Unter iOS 6.1.6 läuft die App einwandfrei, ohne dass diese Fehlermeldungen angezeigt werden.
quelle
Es scheint hier viele alte Antworten zu geben, deshalb wollte ich nur die offizielle Antwort des Swift-Teams veröffentlichen. Swift ist abwärtskompatibel mit OS X Mavericks und iOS 7
Apple Entwickler Swift Blog: Objective-C ID als Swift Any
11. Juli 2014
Kompatibilität
Eine der häufigsten Fragen, die wir auf der WWDC hörten, war: „Was ist die Kompatibilitätsgeschichte für Swift?“. Dies scheint ein großartiges erstes Thema zu sein.
App-Kompatibilität Wenn Sie heute eine Swift-App schreiben und diese im Herbst an den App Store senden, wenn iOS 8 und OS X Yosemite veröffentlicht werden, können Sie darauf vertrauen, dass Ihre App auch in Zukunft funktioniert. Tatsächlich können Sie mit derselben App auf OS X Mavericks oder iOS 7 zurückgreifen. Dies ist möglich, weil Xcode eine kleine Swift-Laufzeitbibliothek in das Bundle Ihrer App einbettet. Da die Bibliothek eingebettet ist, verwendet Ihre App eine konsistente Version von Swift, die auf früheren, gegenwärtigen und zukünftigen Betriebssystemversionen ausgeführt wird.
quelle
Ich habe auch eine sehr einfache App auf 10.8 ausprobiert (eine Schaltfläche, setzt Text auf ein Etikett). Es stürzte beim Start ab, wie Greg Parker feststellte:
(Hierbei wurde ein Bereitstellungsziel von 10.7 verwendet.)
quelle
Versuchen Sie den folgenden Code:
Es funktioniert ohne StoryBoard:
quelle
Ja, tatsächlich hat Apple angekündigt, dass Swift-Apps abwärtskompatibel mit iOS 7 und OS X Mavericks sein werden. Darüber hinaus ist die WWDC-App in der Programmiersprache Swift geschrieben.
quelle
Wenn es um Swift Frameworks geht. Wenn das Swift-Framework mit Xcode Version 6.1.1 (6A2008a) auf iOS 7.1 ausgerichtet ist, wird eine Linker-Warnmeldung angezeigt
Die Bewerbung kann nicht an AppStore gesendet werden. Überprüfen Sie dieses Problem: Lint, um zu verhindern, dass dynamische Bibliotheken und Frameworks mit iOS 7 übertragen werden
quelle
Mach-O Type
müssenDynamic Library
jedoch nur iOS 7 akzeptierenStatic Library
.Ab dem 15. Februar 2015 können wir keine Apps mehr an den Store senden, die mit einem SDK vor iOS 8 entwickelt wurden . Vor diesem Hintergrund ist es besser, sich keine Sorgen um dieses Problem zu machen, da viele Leute vorgeschlagen haben, dass in Swift erstellte Apps auch für OS X 10.9 und iOS 7.0 bereitgestellt werden können .
quelle
Beantworteter Code-Ausschnitt von Leandros gepostete scheint etwas alt zu sein. Ich habe es in Swift 5 behoben und kompilierbar gemacht.
Swift 5
quelle