Sie wissen wahrscheinlich, dass Swift 3 später in diesem Jahr kommt. Es ist die erste Veröffentlichung, die die harte Arbeit einer fantastischen Community beinhaltet. Dutzende von Vorschlägen wurden eingereicht, seit Apple Swift im Jahr 2015 als Open Source anbot. Dutzende wurden nach sorgfältiger Prüfung durch das Kernteam angenommen. In diesem Artikel werfen wir einen Blick auf einige wichtige Änderungen in Swift 3.
Das Kernteam hat mit der Veröffentlichung von Swift 3 ein klares Ziel vor Augen und schafft eine solide Grundlage für die Programmiersprache Swift. Auf der WWDC 2016 betonte Chris Lattner, dass Swift 3 eine Reihe bahnbrechender Änderungen mit dem Ziel einführt, die richtigen Grundlagen zu schaffen. Das ist das gemeinsame Thema der kommenden Veröffentlichung. Dies bedeutet, vorhandene Funktionen zu brechen, einige Funktionen zu entfernen und die Grundlagen der Sprache zu verbessern.
Das Swift-Evolution-Projekt war für alle Beteiligten der Swift-Community eine wahre Erfolgsgeschichte. Das Engagement war enorm und das Ergebnis ist Swift 3. Apple ist transparent über den Release-Prozess. Momentaufnahmen von Swift 3 sind auf der Swift-Website verfügbar und in Xcode 8 enthalten, das sich zum Zeitpunkt des Schreibens in der Beta-Phase befindet.
Die Swift-3-Version konzentriert sich nicht nur auf die Programmiersprache Swift, sondern enthält auch grundlegende Änderungen an der Toolchain, der Standardbibliothek und der Interoperabilität der Sprache mit Cocoa. Denken Sie daran, dass Swift mehr als eine Sprache ist. Wenn wir über Swift sprechen, denken wir in der Regel nur an die Sprache, aber auch die Standardbibliothek und den Paketmanager.
Wenn Sie mit Swift gearbeitet haben, wissen Sie, dass die Migration einer Codebase von einer Version zu einer anderen keine leichte Aufgabe ist. Leider wird die Migration eines Projekts zu Swift 3 nicht anders sein.
Das Hauptziel von Swift 3 ist es jedoch sicherzustellen, dass der Übergang von Swift 3 zu zukünftigen Sprachversionen nicht so sein wird. Die Kompatibilität von Quellen ist ein zentraler Punkt von Swift 3.
Swift wurde als moderne Programmiersprache entwickelt, aber es war ebenso wichtig, eine Sprache zu erstellen, die schön aussah und… naja… großartig war. Mit Swift 3 fährt das Team fort, "die Sprache für Großartiges zu optimieren", wie Chris Lattner es formuliert.
Obwohl es viele bahnbrechende Änderungen gibt, ist das Nettoergebnis eine Sprache, die sich gut anfühlt und gut aussieht. Swift 3 macht Spaß. Die Änderungen an Core Graphics und Grand Central Dispatch, die wir gleich besprechen, sind gute Beispiele.
Genug davon, wie fantastisch Swift ist und wie viel beeindruckender Swift 3 sein wird. Im Rest dieses Artikels möchte ich mich auf einige der wichtigsten Änderungen konzentrieren, die in Swift 3 eingeführt wurden. Denken Sie daran, dass sich Swift 3 bis zur offiziellen Veröffentlichung später in diesem Jahr weiterentwickelt.
Es wurde viel Zeit und Energie aufgewendet, um die API der Swift-Sprache zu verbessern. Die Änderungen sind signifikant, das lässt sich nicht bestreiten. Aber das Ergebnis ist sehr, sehr schön. Mit Swift 3 strebt das Kernteam eine API an, die auf Lesbarkeit und Zugänglichkeit ausgerichtet ist.
Während sich viele von uns an die Ausführlichkeit von Objective-C gewöhnt haben, verfolgt die neue Swift-API einen anderen Ansatz, indem sie nur das Wesentliche betont und sich darauf konzentriert. Schauen Sie sich das folgende Beispiel von Swift 2.2.1 an. Dieses Beispiel sollte Ihnen bekannt vorkommen, wenn Sie einige Zeit mit Swift… oder Objective-C verbracht haben.
parentViewController.presentViewController (newViewController, animiert: true, Vollendung: null)
In Swift 3 sieht dieses Codeausschnitt etwas anders aus, wie Sie unten sehen können.
parentViewController.present (newViewController, animiert: true, Fertigstellung: null)
Die Swift-Community erkannte, dass es nicht nötig ist, einen Verweis auf das, was präsentiert wird, hinzuzufügen, da diese Informationen bereits im ersten Parameter enthalten sind. Dadurch wird der Methodenname lesbarer und prägnanter. Eine deutliche Verbesserung, wenn Sie mich fragen.
Dies ist ein allgemeiner Faden in Swift 3. Einige der Vorschläge, die angenommen und in Swift 3 aufgenommen wurden, konzentrieren sich auf die Vereinfachung und das Entfernen von Cruft aus der Sprache. Die Swift-API wurde anfangs stark durch die Ausführlichkeit von Objective-C beeinflusst. Die Lesbarkeit ist großartig, aber Swift 3 reduziert die Ausführlichkeit, ohne die Lesbarkeit zu beeinträchtigen.
Die Swift-Community ist der Meinung, dass beim Design einer API immer die Verwendung der API berücksichtigt werden sollte. Dies ist in den Änderungen, die in Swift 3 eingeführt wurden, deutlich sichtbar. Ich bin sicher, Sie stimmen zu, dass die überarbeitete API-und-scheint liest großartig.
Eine weitere wichtige Änderung, die viele Entwickler begrüßen, ist die konsistente Signatur von Funktion und Methoden, indem standardmäßig die erste Parameterbezeichnung eingefügt wird. So sieht eine typische Funktion in Swift 2.2.1 aus. Standardmäßig wird der erste Parameter nicht angegeben, wenn die Funktion aufgerufen wird.
func setupView (view: UIView, withConfiguration Konfiguration: Konfiguration) //… setupView (view, withConfiguration: Konfiguration)
Dies ist in Swift 3 nicht mehr der Fall. Der erste Parameter wird nicht mehr speziell behandelt, was eine sehr willkommene Änderung darstellt.
func setupView (view: UIView, withConfiguration configuration: Configuration) //… setupView (view: view, withConfiguration: Konfiguration)
Aufgrund dieser Änderung könnten Sie das obige Beispiel weiter verbessern, indem Sie den Verweis auf die Ansicht im Funktionsnamen weglassen.
func setup (view: UIView, withConfiguration Konfiguration: Configuration) //… setup (view: view, withConfiguration: Konfiguration)
Die Arbeit mit C-APIs in Swift hat immer klobig ausgesehen. Core Graphics-Funktionen werden beispielsweise als globale Funktionen importiert, was keine gute Lösung ist. Daher fühlt sich die Verwendung von Core Graphics in Swift nicht besonders gut an.
Gleiches gilt für Grand Central Dispatch. Im nächsten Beispiel verwenden wir Grand Central Dispatch, um eine Task asynchron in eine Hintergrundwarteschlange zu senden.
dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) //…
In Swift 3 fühlt sich die API eher an eine native Swift-API. Funktionen werden als Methoden importiert, was in Swift 3 die folgende Syntax ergibt.
DispatchQueue.global (Attribute: .qosBackground) .async //…
Die Swift-Community stimmte auch der Entfernung einer Reihe von Funktionen zu, von denen einige einige hitzige Diskussionen ausgelöst haben. Ich möchte vier davon aufzeigen.
zum
SchleifenKommt Ihnen das bekannt vor??
für (var i = 0; i < 5; i++) print(i)
C-Stil zum
Schleifen sind in Swift 3 nicht mehr verfügbar. Warten Sie. Was? Warum? Das ist eine sehr gute Frage. Sie können den von Erica Sadun eingereichten Vorschlag auf GitHub lesen. Dies bringt uns zur nächsten kontroversen Änderung.
++
und --
Kurz nach dem Open-Sourcing von Swift legte Chris Lattner, der Entwickler von Swift, einen Vorschlag vor, die Inkrement- und Dekrement-Operatoren aus der Sprache zu entfernen. In seinem Vorschlag erwähnt er, dass diese Betreiber zu Beginn der Entwicklung von Swift "ohne große Rücksichtnahme" hinzugefügt wurden. So bereinigen Sie die Swift-API und vermeiden Sie Verwirrung, ++
und --
sind in Swift nicht mehr verfügbar.
var a = 0 a++
Keine Panik. Die Lösung ist einfach. Keine Notwendigkeit zu ärgern.
var a = 0 a + = 1
var
ParameterWenn Sie mit Funktionen in Swift vertraut sind, wissen Sie, dass die Parameter einer Funktion standardmäßig konstant sind. Sie können dieses Verhalten ändern, indem Sie dem Parameter einen Namen voranstellen var
Stichwort. Bei variablen Parametern wird eine variable Kopie des Parameters an die Funktion übergeben.
Aber wie unterscheidet sich dies von den als gekennzeichneten Parametern inout
? Recht. Das ist genau das, was viele von uns gewundert haben, und es ist die Motivation, variable Parameter aus der Sprache zu entfernen.
Aus Sicht der Funktion gibt es keinen Unterschied, dh die Funktion erhält eine veränderliche lokale Kopie des Parameterwerts. Wie der Name andeutet, ist jedoch ein Parameter als gekennzeichnet inout
schreibt seinen Wert zurück in die ursprüngliche Variable.
Um Verwirrung zu vermeiden, var
Parameter stehen in Swift 3 nicht mehr zur Verfügung. Zum Glück, inout
Parameter sind hier zu bleiben.
Apropos inout
Parameter, in Swift 3, die inout
Schlüsselwort ist in die Typensyntax der Funktionsparameter integriert. Sehen Sie sich die folgenden Beispiele an, um diese Änderung besser zu verstehen.
// Swift 2 func kombinierenStrings (inout erster: String, zweiter: String) //… // Swift 3 func kombinierenStrings (erster: inout String, zweiter: String) //…
Obwohl Swift noch sehr jung ist, gibt es viele Funktionen, die ziemlich fortgeschritten sind. Wussten Sie, dass Sie anstelle einer Parameterliste ein Tupel an eine Funktion übergeben können? Es gibt jedoch keinen Grund zum Jubeln. Diese Funktion wird in Swift 3 entfernt.
// Argumente als separate Argumente übergeben let view = UIView () let configuration = Configuration () setupView (view, withConfiguration: configuration) // Argumente als Teil von Tuple übergeben let tuple = (view, withConfiguration: configuration) setupView (tuple)
Chris Lattner bezeichnet dieses Verhalten in seinem Vorschlag, die Funktion zu entfernen, als "süß". Obwohl dieses Verhalten von Zeit zu Zeit nützlich sein kann, scheint es einige Konsequenzen zu haben. Der Grund für die Vorlage dieses Vorschlags besteht darin, das Hauptziel des Kernteams hervorzuheben, indem die Syntax und die API der Sprache vereinfacht werden.
Ich kann sehen, wie dieses Feature auf den ersten Blick ordentlich aussah, aber mit zunehmender Sprache, zunehmender Komplexität und mehr Leuten, die es nutzten, fügten Features wie diese der Sprache einen begrenzten Wert hinzu, im Gegenzug für eine Liste von Komplikationen , einschließlich Leistungsproblemen während der Kompilierung und der Komplexität des Typprüfers, die durch das Weglassen der Funktion vermieden werden könnten.
Letzte Woche habe ich über Xcode 8 geschrieben. In diesem Artikel habe ich erwähnt, dass Xcode 8 sowohl Swift 2.3 als auch Swift 3 unterstützt. Was aber ist Swift 2.3 und wie ist es mit Swift 2.2 zu vergleichen??
Swift 2.3 ist ein kleines, aber wichtiges Update von Swift. Der Hauptunterschied zu Swift 2.2.1, der in Xcode 7.3.1 enthaltenen Version, ist die Kompatibilität mit den SDKs für die neuen Betriebssysteme von Apple, iOS 10, tvOS 10, watchOS 3 und macOS Sierra (10.12)..
Das bedeutet, dass Sie die neuen SDKs verwenden können, ohne zu Swift 3 springen zu müssen. Mit Xcode 8 können Sie mithilfe von Swift 2.3 oder Swift 3 Anwendungen an den App Store senden. Das Swift-Team kennt und versteht die Migration zu Swift 3 hat erhebliche Auswirkungen auf bestehende Projekte, zu denen Swift gehört. Swift 2.3 stellt sicher, dass Sie Ihre Projekte migrieren können, wenn Sie es für richtig halten.
Am Swift-Projekt gefällt mir auch, dass die Tools neben der Sprache entwickelt werden. Dies bedeutet, dass die Tools auch ein umfangreiches Update erhalten, wenn Swift 3 später in diesem Jahr veröffentlicht wird.
Während der WWDC haben wir bereits einen Blick auf die Änderungen an der Dokumentation gesehen. Haben Sie sich jemals Gedanken darüber gemacht, wie viel Zeit Sie damit verbringen, die Dokumentation zu durchsuchen? Ich habe ein Faible für Details wie diese und schätze die Bemühungen des Teams, die Dokumentation besser zugänglich zu machen. Die Änderungen sind in Xcode 8 noch dramatischer, als ich letzte Woche schrieb.
Momentan verwendet die große Mehrheit der Swift-Entwickler Xcode als Arbeitspferd. Dies kann sich in Zukunft ändern, da die Sprache auf anderen Plattformen an Bedeutung gewinnt. Hatte Google nicht vor, Swift auf Android zu verwenden?
In Xcode 8 wurde die Integration von Swift wesentlich verbessert. Die Navigation in der Standardbibliothek ist beispielsweise intuitiver. In einer Sitzung der WWDC 2016 veranschaulicht Ewa Matejska, wie die synthetisierten Schnittstellen intuitiver und verständlicher sind. Dadurch ist das Durchsuchen der Standardbibliothek weniger abschreckend.
Dies bringt uns zur Erstellung und Optimierung. Sie haben möglicherweise von der gesamten Moduloptimierung gehört. Diese Funktion ist jetzt standardmäßig in Xcode aktiviert. Dies wirkt sich auf die Anwendungsleistung aus. Apple empfiehlt, diese Funktion in der Produktion zu aktivieren. Wenn Sie mehr über die gesamte Moduloptimierung erfahren möchten, empfiehlt es sich, diesen Artikel von Keith Harrison zu lesen.
Während die Optimierung der gesamten Module die Erstellungszeit beim Erstellen eines Projekts erhöht, sind die Ergebnisse mehr als wert. Nachfolgende Builds werden durch inkrementelle Kompilierung weniger beeinträchtigt.
Swift 3 ist ein wichtiger Meilenstein für alle, die an der Swift-Community beteiligt sind. Auch wenn niemand gerne Änderungen durchbricht, wird die Richtung der Sprache klarer, wodurch die Plattform robuster und für zukünftige Änderungen bereit ist, ohne die Kompatibilität der Quellen zu beeinträchtigen.
In diesem Artikel habe ich einige der wichtigsten Änderungen hervorgehoben, die Sie in Swift 3 erwarten können. Um eine umfassende Liste der Änderungen zu erhalten, empfehle ich Ihnen, den Migrationsleitfaden auf der Swift-Website zu besuchen.
Sie können auch das Swift-Evolution-Projekt auf GitHub besuchen, um mehr über die angenommenen Vorschläge und die noch in Bearbeitung befindlichen Vorschläge zu erfahren. Hab keine Angst. Die Vorschläge sind oft leicht verständlich. Tatsächlich ist das Ziel des Swift-Evolutionsprojekts, dass alle in die Diskussion einbezogen werden können. Was hält dich auf?