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

616

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?

MeIr
quelle
51
Angenommen, Swift wird in eine "normale" ausführbare Datei kompiliert, und wenn im Betriebssystem keine Swift-spezifische Laufzeitbibliothek benötigt wird, sollte sie auf älteren Systemen ausgeführt werden. Wir wissen es einfach noch nicht. Laden Sie Xcode 6 herunter und probieren Sie es aus.
rmaddy
12
Eine offizielle Antwort finden Sie im Video zum Zustand der Union.
Steven Fisher
3
@rmaddy FWIW: Auf der WWDC wurde in der Swift-Präsentation am deutlichsten festgestellt, dass Swift und Objective-C dieselbe Laufzeit haben.
11684
1
Es ist allgemein bekannt und wurde sogar in der Keynote erwähnt, dass es auf diesen Betriebssystemen ausgeführt wird.
Rhummelmose
3
Diese Frage wird als Beispiel auf der Tour-Seite verwendet .
Donald Duck

Antworten:

520

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:

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
}
Leandros
quelle
13
Siehe stackoverflow.com/questions/24007050/… - es widerspricht dieser Antwort (zumindest dem "oder noch niedrigeren" Teil).
rmaddy
14
Ich habe nur iOS 7.0 und OS X 10.9 getestet. Wie in der Antwort gesagt.
Leandros
@Leandros Warum müssen wir mit dem Schlüsselwort var zweimal UIViewController in diese Zeile "var controller: UIViewController = UIViewController ()" eingeben? Ist var nicht dasselbe wie JavaScript / C # (wenn nein, dann so traurig)? Ist das Casting, aber die Objekttypen sind auf beiden Seiten des Gleichheitszeichens gleich?
Tien Do
3
@TienDo Ich habe keine Swift-Erfahrung, aber ich nehme an, dass das erste UIViewControllernach dem Doppelpunkt den Typ der Variablen darstellt und das zweite nach dem Aufruf des =Zeichens den Konstruktor (initialisiert die Variable).
ComFreek
2
Für iOS: In Xcode 6 Beta gibt es Bereitstellungsziele bis iOS 6. Ich habe sie alle getestet und herausgefunden. Es gibt einige Antworten, die dasselbe aussagen.
ySiggen
197

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

Greg Parker
quelle
4
Greg, danke, dass du hierher gekommen bist, um Fragen zu beantworten. Können Sie etwas darüber sagen, was 10.8-> 10.9 und 6.x-> 7.0 geändert hat, damit von Swift generierter Code ausgeführt werden kann?
Ivan Vučica
20
Swift setzt einige Bits in den Objective-C-Metadaten, um Swift-Klassen zu markieren. libobjc in OS X 10.9 und iOS 7.0 wurde geändert, um diese Bits zur Vorbereitung auf Swifts Ankunft zu ignorieren. Ältere Betriebssystemversionen werden durch diese Bits verwirrt.
Greg Parker
9
Ich würde mich sehr freuen , wenn Apple in Betracht ziehen würde, Swift-Apps auch auf älteren Plattformen zum Laufen zu bringen (zumindest ab OSX 10.7). Grund dafür ist, dass wir immer noch viele Kunden mit diesem Betriebssystem haben, sodass wir jahrelang nicht mit Swift entwickeln können, wenn 10.9 das minimal unterstützte Betriebssystem ist!
Mike Lischke
2
@GregParker Gibt es eine Möglichkeit, diese Antwort für Swift 2 zu aktualisieren, unabhängig davon, ob sich die Laufzeitanforderungen geändert haben oder nicht?
Andrey Tarantsov
1
Die minimal unterstützten Bereitstellungsziele für von Swift erstellte ausführbare Dateien bleiben iOS 7.0 und OSX 10.9. In iOS 7 / OSX 10.9 oder früher veraltete APIs sind nicht verfügbar. Beim Erstellen unterstützt Swift nur das SDK, mit dem es in Xcode geliefert wird.
Flash Sheridan
103

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.

Ben Gottlieb
quelle
11
Wirklich WWDC ist in Swift geschrieben?
Satheeshwaran
7
Ja, die WWDCC-App ist in Swift geschrieben. Wie sie gestern sagten.
Shial
22
Jay Freeman behauptet etwas anderes: twitter.com/saurik/status/473785847926374400
Ivan Vučica
2
Die Marketingtaktik von Apple wird jedoch häufig von Unternehmen angewendet. Windows wurde in Assembly geschrieben! Nun, nur der Bootloader und einige andere Dinge, aber es wurde in Assembly geschrieben.
Cole Johnson
4
@ IvanVučica aber 4 Klassen reichen aus, um die Kompatibilitätsfrage zu beantworten.
ilya n.
100

Update - Gemäß Xcode 6 Beta 4

Mindestbereitstellungsziel für iOS 7 und OS X 10.9

Der Swift-Compiler und Xcode erzwingen jetzt ein Mindestbereitstellungsziel von iOS 7 oder OS X Mavericks. Das Festlegen eines früheren Bereitstellungsziels führt zu einem Buildfehler.

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:

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 ist eine einfache Anwendung, bei der nur programmgesteuert eine Schaltfläche hinzugefügt wird. Meine Anwendung enthält nur zwei Dateien AppDelegate.swiftund ViewController.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


Anil Varghese
quelle
Wie bei früheren Systemaktualisierungen werden einige Frameworks / Klassen eingestellt und müssen bedingt unterstützt werden.
Miriam H.
@TienDo Keine Notwendigkeit von Semikolons :) Auch wenn Sie versehentlich sagen (es ist eine Tradition), dass kein Problem sein wird
Anil Varghese
3
Sie können aber trotzdem Semikolons verwenden, wenn Sie wirklich wollen. Zwei Aussagen in einer Zeile sind durch ein Semikolon getrennt
PaulWoodIII
33

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.

Durai Amuthan.H
quelle
2
"klein" dauert ~ 20 mb oder so. :)
BangOperator
1
Das Einbeziehen der gesamten Laufzeit in die Binärdatei mag etwas aufgebläht erscheinen, aber da Swift immer noch nicht vollständig stabil ist, ist es für sie sinnvoll, Entwicklern zu ermöglichen, in ihrer eigenen Zeit mit der neuen Version von Swift neu zu kompilieren, anstatt eine gemeinsam genutzte Bibliothek und zu aktualisieren alle Apps brechen. Sobald sich Swift stabilisiert hat, gehe ich davon aus, dass die Laufzeit neben allem anderen in einer Dylib irgendwo gespeichert wird.
William T Froggard
@ WilliamTFroggard - Ja, hoffe es
Durai Amuthan.H
30

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.

Chris Pietschmann
quelle
1
Es sieht so aus, als könnten Sie mit Xcode Beta 6 schnelle Apps auf 10.9.3 ausführen, aber ich bin nicht sicher, wie weit eine schnelle App zurück ausgeführt werden kann, z. B. 10.7 oder 10.8?
John
22

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.

  • Ich erstelle gerade ein Demo-Projekt in Xcode 6 BETA mit der ausgewählten Programmiersprache Swift.
  • Schließen Sie Xcode 6 Beta und ich öffne dieses Demo-Projekt in Xcode 5 mit Bereitstellungsziel 6.0
  • Und wählen Sie auch Simulator 6.1 .

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:

Geben Sie hier die Bildbeschreibung ein

Hier ist auch eine Demo

Nitin Gohel
quelle
3
Frage: Ohne schnelle Unterstützung, wie XCode-5 die schnelle Quelle erstellt?
Subin Sebastian
Sie können den Simulatore-Screenshot sehen :) Ich habe den oben angehängten Screenshot in Photoshop nicht erstellt
Nitin Gohel
Ich meine, ich habe eine objektive C-App auf schnell umgestellt und Kunden auf ios 6. Funktioniert die schnelle App also?
Maneesh Sharma
zuerst versuchen Sie mit Demo-Code, wenn das funktioniert, dann ja, dass definitiv funktioniert
Nitin Gohel
20

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 .

virindh
quelle
15

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 Beta

Swift-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 soll

vladof81
quelle
1
Ich denke, die verschiedenen Bereitstellungsziele sind einfach noch nicht korrekt (XCode 6 ist eine Beta). Nur weil Sie den Wert auswählen können, heißt das nicht, dass er funktioniert. Ich habe es mit OSX 10.7 als Ziel versucht und es hat nicht funktioniert. Beachten Sie auch, dass Greg Parker oben eine maßgebliche Bestätigung über Plattformen gegeben hat.
Mike Lischke
@ Mike Lischke, wieder hatte ich mehrere Tests, um meine Argumente zu stützen. Und ich kann die OS X-App ausführen, wenn ich Bereitstellungsziel 10.7 auswähle. Aber ich weiß es zu schätzen, dass Sie den Thread der OS X-App-Unterstützung aufgerufen haben.
Vladof81
Wie erklären Sie dann meine Ergebnisse? Und was ist mit dem, was Greg Parker geschrieben hat? Ich würde mich sehr freuen, wenn Swift Apps auf 10.7 funktionieren würde, aber bisher habe ich kein funktionierendes Beispiel gesehen. Natürlich kann ich auch 10.7 als Bereitstellungsziel festlegen, aber es macht keinen Unterschied. Die App ist verrückt.
Mike Lischke
@ Mike Lischke, hast du iOS-Apps auf Geräten getestet?
Vladof81
1
Ich habe es auch gesehen und alle Bereitstellungsziele in Xcode 6 Beta getestet (wie die Antwort). Funktionierte gut mit 2 verschiedenen Test-Apps.
ySiggen
14

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:

Crashed Thread:  0

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000

Application Specific Information:
dyld: launch, loading dependent libraries

    Dyld Error Message:

  Library not loaded: /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
  Referenced from: /Users/USER/Desktop/Swift-Test.app/Contents/MacOS/../Frameworks/libswiftAppKit.dylib
  Reason: image not found

Binary Images:
       0x109c65000 -        0x109c6afff +private.Swift-Test (1.0 - 1) <649695D0-58FD-3D02-9176-2D40D4E711F2> /Users/USER/Desktop/Swift-Test.app/Contents/MacOS/Swift-Test
       0x109c83000 -        0x109dbffff +libswift_stdlib_core.dylib (1.0 - 600.0.34.4.5) <10AAC369-9404-321D-A892-49F65856D7AF> /Users/USER/Desktop/Swift-Test.app/Contents/Frameworks/libswift_stdlib_core.dylib
...

Diese Nachricht ist jedoch irritierend, da diese VM sicherlich eine CoreGraphics-Bibliothek enthält. Andere Anwendungen, die CoreGraphics stark nutzen, funktionieren einwandfrei.

Mike Lischke
quelle
14

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.

Yatheesha BL
quelle
12

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:

dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftCoreGraphics.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftDarwin.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftDispatch.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftFoundation.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftObjectiveC.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftUIKit.dylib with errno=1
dyld: Symbol not found: _OBJC_CLASS_$_NSObject
  Referenced from: /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib
  Expected in: /usr/lib/libobjc.A.dylib
 in /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib

Unter iOS 6.1.6 läuft die App einwandfrei, ohne dass diese Fehlermeldungen angezeigt werden.

David H.
quelle
12

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.

Oren
quelle
11

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:

Dyld Error Message:
  Symbol not found: __dispatch_source_type_memorypressure
  Referenced from: /Volumes/*/SwifTest.app/Contents/MacOS/../Frameworks/libswiftDispatch.dylib
  Expected in: /usr/lib/libSystem.B.dylib
in /Volumes/*/SwifTest.app/Contents/MacOS/../Frameworks/libswiftDispatch.dylib

(Hierbei wurde ein Bereitstellungsziel von 10.7 verwendet.)

Valdar Moridin
quelle
10

Versuchen Sie den folgenden Code:

Es funktioniert ohne StoryBoard:

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

    // Create a nav/vc pair using the custom ViewController class

    let nav = UINavigationController()
    let vc = ViewController(nibName: "ViewController", bundle: nil)

    // Push the vc onto the nav
    nav.pushViewController(vc, animated: false)

    // Set the window’s root view controller
    self.window!.rootViewController = nav

    // Present the window
    self.window!.makeKeyAndVisible()
    return true
}
PREMKUMAR
quelle
Und wie benutzt man nav.rootviewcontroller?
Allan
8

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.

Bodi Osman
quelle
8

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

ld: warning: embedded dylibs/frameworks only run on iOS 8 or later.

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

Marcin
quelle
Swift Frameworks Mach-O Typemüssen Dynamic Libraryjedoch nur iOS 7 akzeptieren Static Library.
DawnSong
7

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 .

13. Geist
quelle
Würden Sie uns eine Quelle zur Verfügung stellen?
Binus
1
Es gibt einen Unterschied zwischen dem Basis-SDK und dem Bereitstellungsziel. Sie können ein Basis-SDK von iOS 9 und ein Bereitstellungsziel von iOS 7 haben und an iTunes Connect senden. Downvoting, weil Sie keine Quelle angegeben haben.
Cœur
1
In der aktuellen Apple-Dokumentation wird weiterhin die Unterstützung für iOS 4.3 erwähnt: developer.apple.com/library/content/documentation/IDEs/…
Cœur
1

Beantworteter Code-Ausschnitt von Leandros gepostete scheint etwas alt zu sein. Ich habe es in Swift 5 behoben und kompilierbar gemacht.

Swift 5

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let controller = UIViewController()
    let view = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 568))
    view.backgroundColor = UIColor.red
    controller.view = view

    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
    label.center = CGPoint(x: 160, y: 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
}
Sazzad Hissain Khan
quelle