Vad är nytt i Swift 3?

Introduktion

I september släppte Apple officiellt den senaste versionen av sitt nya programmeringsspråk, Swift 3. Precis som Swift 2 förra året innehåller denna version många nya funktioner och förbättringar, vilket gör programmering med Swift ännu bättre!

Swift 3 ingår i Xcode sedan version 8.0 och kan också laddas ner från swift.org webbplatsen.

1. Använda Swift 3

Om du vill använda Swift 3 i dina nuvarande eller framtida projekt ger Xcode ett utmärkt migreringsverktyg för att du enkelt ska kunna göra det.

För nya Swift-projekt skapade med Xcode 8 kommer Swift 3 att användas automatiskt. När du öppnar ett Swift 1 eller 2-projekt i Xcode 8 för första gången kommer du att presenteras med en varning för att konvertera din kod till antingen Swift 3 eller Swift 2.3-kod. 

Att välja Swift 2.3 ger dig tillgång till alla nya iOS 10, MacOS Sierra, TVOS 10 och WatchOS 3 API, men använder fortfarande Swift 2-syntaxen. Alternativt kan du välja att inte konvertera din kod direkt och fortsätt använda en äldre version av Swift. När du är redo kan du då gå till Redigera> Konvertera> Till nuvarande Swift Syntax ...  i Xcode menyraden för att konvertera all din kod.

Migreringsverktyget tar hand om alla ändringar som måste göras i din kod för att anta Swift 3 från Swift 2. Det inkluderar ändring av metod- och egendomsnamn, ändring av syntax vid behov och många andra saker. Innan du gör omvandlingen visar Xcode de väntande ändringarna för var och en av dina Swift-kodfiler. Det innebär att du kan verifiera alla förändringar innan de görs, bara för att vara säker på att migreringsverktyget inte introducerar fel i ditt projekt.

2. Foundation

En stor del av Swift 3-utgåvan var det nya, open-source Foundation-biblioteket. Medan erfarna MacOS- och IOS-utvecklare skulle känna till Foundation-ramverket, ger detta bibliotek några nya funktioner med det för Swift-programmerare. 

Den första omedelbara förändringen som du kommer att märka när du använder de nya Foundation APIs är bristen på en NS prefix. Detta innebär att klasser som NSDate, NSTimer och NSURL är nu bara Datum, Timer och URL i Swift-kod. Kodmigreringsverktyget i Xcode 8 kommer automatiskt att byta namn på alla dessa klasser, men det är en förändring som alla Swift-utvecklare måste vara medvetna om när de skriver ny kod.

Nästa, som ett kärnbibliotek av Swift, är alla Foundation API nu kompatibla med Linux-baserade operativsystem. Eftersom Swift är kompatibel med andra plattformar, så kommer också Foundation-biblioteket. Det betyder att kärnan av funktionalitet från Foundation, som datum / tidshantering och nätverk, kan användas var som helst Swift kan användas. Denna interoperabilitet på plattformen var en av huvudmotiven för att ta bort NS prefix från Foundation APIs.

Slutligen har många av Foundation API: erna nu omformats för att passa in bättre med Swift-kod. Till exempel, beroende på API: n, kan det här redesigningsmedlet Foundation nu dra nytta av:

  • Den förbättrade felhanteringen använder Prova och fånga block som introducerades med Swift 2.
  • Valfria typer, i motsats till alla implicit oöppnade valfria typer som skapades när importen av Objective-C Foundation-ramverket infördes i Swift.
  • Mer moderna och optimerade algoritmer.
  • Bättre övergripande prestanda från att skrivas i ren Swift, som i sig är mycket optimerad.

Övergripande, med hjälp av det nya Swift Foundation-biblioteket, är en mycket bättre upplevelse jämfört med att använda den gamla Foundation Framework i din egen Swift-kod. Om du vill veta mer om open-source Swift Foundation-biblioteket kan du kolla in det på GitHub.

3. Riktlinjer för namngivning av API

Swift 3 introducerar också några nya API-designriktlinjer. Dessa skapades för att förenkla alla Swift APIs förutom att göra dem konsekventa. 

Ta bort onödiga ord

Den första ändringen i Swift 3 för att göra bättre API: er tog bort onödiga ord från metod- och egendomsdeklarationer. Denna ändring fungerar både som en språkfunktion vid import av Objective-C API och påverkar också riktlinjerna för utvecklare att skriva sin egen Swift-kod. Följande kod innehåller några exempel på Swift 2-kod jämfört med den funktionellt identiska Swift 3-koden.

låt färg = UIColor.redColor () // Swift 2 låt färg = UIColor.red // Swift 3 "Hello World!". capitalizedString // Swift 2 "Hello World!". capitalized // Swift 3 // Swift 2 om someString .containsString ("a")  // Swift 3 om someString.contains ("a") 

Du kommer att se att Swift 3-versionerna är mer läsbara. De om uttalanden i synnerhet har ett bättre flöde och ser mer ut som en engelsk mening skulle.

Funktionsparameteretiketter

Swift 3 försvinner faktiskt en av de ändringar som gjorts i Swift 2: märkningen av den första parametern i en funktion. I Swift 2 ignorerades etiketten för den första parametern automatiskt när man ringde funktionen. Till exempel en funktion som deklareras som:

func addObject (objekt: AnyObject)

skulle kallas i Swift 2 med följande:

addObject (someobject)

Swift 3 reverserar denna förändring och ignorerar inte längre den första parametermärken automatiskt. Det betyder att ovanstående funktion skulle kallas med följande:

addObject (objekt: someObject)

Denna funktion använder dock nu mot utelämna onödiga ord Målet för Swift 3. För att följa de nya Swift API-designriktlinjerna, ska funktionsdeklarationen ändras till:

func add (objekt: AnyObject)

Denna nya deklaration skulle då användas med följande kod:

lägg till (objekt: someObject)

Det här nya formatet av funktionsnamn strömmar såväl som Swift 2-formatet men har den extra fördelen att tillhandahålla en etikett som tydligt är kopplad till funktionens första parameter.

Observera att du fortfarande kan ange att den första parametermärkningen din Swift 3-funktion ska ignoreras. Detta uppnås genom att använda en _ och sedan ett parameternamn som ska användas inom funktionsdefinitionen, till exempel:

// Definition func add (_ objekt: AnyObject) // Åtkomstparameter genom "objekt" -variabler // Användningsadditiv (someObject)

Även om detta var ett mycket grundläggande exempel, blir det nya formatet för deklarerande funktioner extremt fördelaktigt med mer komplicerade namn. Till exempel visar följande kod hur några av Swift Sträng metoderna har nu ändrats från Swift 2 till Swift 3.

låt ersättas = someString.stringByReplacingOccurencesOfString ("a", withString: "A") // Swift 2 låt ersättas = someString.replacingOccurences (av: "a" med: "A") // Swift 3 låt array = listString.componentsSeparatedByString (",") // Swift 2 låt array = listString.components (separatedBy: ",") // Swift 3

Lower Camel Case för Enums och Properties

Denna förändring syftar till att skapa konsekvens i alla egenskaper i Swift 3 samt uppräkningar. Det bestämdes att, eftersom uppräkningsvärden är närmare egenskaper än klasser, borde de följa samma namnformat. 

Detta är en relativt liten förändring och en som Xcode migreringsverktyget tar hand om helt när du konverterar Swift 2-kod. Det är något som alla utvecklare borde vara medvetna om, men när de skriver ny kod. 

Nedan följer några exempel på hur denna förändring påverkar vissa API: er.

låt färg = UIColor.redColor (). CGColor // Swift 2 Låt färg = UIColor.red.cgColor // Swift 3 Lättjustering = NSTextAlignment.Center // Swift 2 Lättjustering = NSTextAlignment.center // Swift 3

4. Grand Central Dispatch

Vid sidan av Swift 3 släpptes även öppen källkod Swift-versionen av Grand Central Dispatch (GCD) -kärnbiblioteket. GCD är Apples ram för att möjliggöra simultan kodkörning på multicore-system. Huvudsyftet med omskrivningen av detta bibliotek är att:

  • Ge samma funktionalitet som de befintliga C-baserade GCD-funktionerna med API som är utformade för att fungera och läsa bra tillsammans med andra Swift-kod.  
  • Ge en uppsättning API-plattformar som, som Stiftelsens kärnbibliotek, kommer att kunna användas där Swift är kompatibelt.

För utvecklare som är erfarna med GCD API: er på Apple-plattformar, är den nya Swift-versionen lätt att förstå. Det följer samma begrepp. Följande kod visar hur några vanliga GCD-uppgifter kan nu göras med Swift 3-kod:

// Göra arbete på en bakgrunds tråd låt kö = DispatchQueue (etikett: "threadName") queue.async // Utför arbete // Göra arbete på huvudgänget DispatchQueue.main.async // Utför arbete // Att göra arbeta med en angiven servicekvalitet, låt kvalitet = DispatchQoS.background queue.async (qos: quality) // Utför arbete // Arbeta efter en viss tid fördröjning = DispatchTime.now () + .seconds ( 10) DispatchQueue.main.after (när: fördröjning) // Execute work

Om du vill lära dig mer om samtidig programmering och GCD i Swift 3 kan du kolla Apples WWDC-session från och med i år och Swift-versionen av Dispatch-referensreferensen.

5. Fördelar med öppen källkod

Medan inte just en ny funktion eller förändring är Swift 3 den första versionen sedan Apple öppnade programmet för programmeringsspråket i december 2015. Att vara helt öppen källkod ger med sig många fördelar, vilket kommer att bli ännu tydligare i framtida versioner av Swift.

För det första gör att Swift och dess kärnbibliotek helt öppen källkod innebär att utvecklare kan använda Swift för att arbeta på andra plattformar och operativsystem. För närvarande är Swift kompatibel med alla Apple-plattformar utöver moderna versioner av Ubuntu. Med tiden kan dock Swift överföras till andra operativsystem, inklusive Android och Windows. Detta har potential att göra Swift till ett verkligt plattformsspråk och används mer av icke-Apple-utvecklare.

När alla Swifts inre verkningar är synliga för allmänheten, betyder det att icke-Apple-anställda kan bidra till språket. Utöver nya funktioner kan expertutvecklare också bidra till buggfixar, förbättringar och optimeringar inom Swift.

Sammantaget kommer att skapa Swift öppen källkod med förbättringar och funktioner på språket i en kortare tidsram eftersom det kommer att tillåta fler personer att bidra till det. Om du vill lära dig mer om Swifts open-source-natur kan du kolla in följande artikel:

  • Swift är öppen källkod

    Den 3 december gjorde Apple ett djärvt drag och gjorde en av branschens mest populära och snabbast växande språk öppna källor. Ta reda på vad det betyder för ...
    Jordanien Morgan
    Snabb

Slutsats

Jag har visat några av de viktigaste ändringarna som kom till Swift-språket i version 3. Det här är en viktig utgåva, förutom att alla nya funktioner och API-kärnbibliotek ger en tydlig bild av hur Swift kommer att utvecklas i framtida år. Om ändringarna i Swift 3 är några indikationer blir språket bara mer och trevligare för utvecklare att använda.

Som alltid, var noga med att lämna din feedback och kommentarer i kommentarfältet nedan. Och kolla in några av våra andra kurser och handledning om Swift-språket!