Hva er nytt i Swift 3?

Introduksjon

I september offentliggjorde Apple offisielt den nyeste versjonen av sitt nye programmeringsspråk, Swift 3. I likhet med Swift 2 i fjor, inneholder denne versjonen mange nye funksjoner og forbedringer, noe som gjør programmeringen med Swift enda bedre!

Swift 3 er inkludert i Xcode siden versjon 8.0 og kan også lastes ned fra swift.org nettsiden.

1. Bruk Swift 3

Hvis du vil bruke Swift 3 i dine nåværende eller fremtidige prosjekter, gir Xcode et utmerket migreringsverktøy for å gjøre det enkelt å gjøre det.

For nye Swift-prosjekter opprettet med Xcode 8, vil Swift 3 bli brukt automatisk. Når du åpner et Swift 1 eller 2-prosjekt i Xcode 8 for første gang, vil du bli presentert med et varsel om å konvertere koden til enten Swift 3 eller Swift 2.3-koden. 

Hvis du velger Swift 2.3, får du tilgang til alle de nye iOS 10-, macOS Sierra-, tvOS 10- og watchOS 3-APIene, men vil fortsatt bruke Swift 2-syntaksen. Alternativt kan du velge å ikke konvertere koden din med en gang, og fortsett å bruke en eldre versjon av Swift. Når du er klar, kan du da gå til Rediger> Konverter> Til Gjeldende Swift Syntax ...  i Xcode menylinjen for å konvertere all koden din.

Migreringsverktøyet tar seg av alle endringene som må gjøres til koden din for å vedta Swift 3 fra Swift 2. Dette inkluderer endring av metode- og eiendomsnavn, endring av syntaks når det trengs, og mange andre ting. Før du fullfører konverteringen, viser Xcode de ventende endringene for hver av dine Swift-kodefiler. Dette betyr at du kan bekrefte alle endringene før de blir gjort, bare for å være sikker på at overføringsverktøyet ikke introduserer feil i prosjektet ditt.

2. Foundation

En stor del av Swift 3-utgivelsen var det nye, åpne kildefondsbiblioteket. Mens erfarne MacOS- og iOS-utviklere vil være kjent med stiftelsens rammeverk, bringer dette biblioteket noen få nye funksjoner med det til Swift-programmerere. 

Den første umiddelbare endringen du vil legge merke til når du bruker de nye Foundation APIene, er mangelen på en NS prefiks. Dette betyr at klasser som NSDate, NSTimer og NSURL er nå bare Dato, Timer og URL i swift kode. Kodeoverføringsverktøyet i Xcode 8 vil automatisk omdøpe alle disse klassene for deg, men dette er en endring som alle Swift-utviklere må være oppmerksomme på når du skriver ny kode.

Ved å være et kjernebibliotek av Swift er alle Foundation APIene nå kompatible med Linux-baserte operativsystemer. Som Swift er gjort kompatibel med andre plattformer, så vil også Foundation-biblioteket. Dette betyr at kjerne settet av funksjonalitet fra Foundation, som dato / tidshåndtering og nettverk, kan brukes hvor som helst Swift kan brukes. Denne interoperabiliteten på tverrplattformen var en av hovedgrunnene for å fjerne NS prefiks fra Foundation APIs.

Til slutt har mange av Foundation APIene blitt omformet for å passe inn bedre med Swift-kode. For eksempel, avhengig av API, betyr dette redesignet at Foundation kan nå dra nytte av:

  • Den forbedrede feilhåndteringen bruker prøve og å fange blokker som ble introdusert med Swift 2.
  • Valgfrie typer, i motsetning til alle implisitt utpakket valgfrie typer som ble opprettet ved import av Objective-C Foundation-rammen til Swift.
  • Mer moderne og optimaliserte algoritmer.
  • Bedre ytelse fra å bli skrevet i ren Swift, som i seg selv er svært optimalisert.

Samlet sett er det å bruke det nye Swift Foundation-biblioteket en mye bedre opplevelse enn å bruke det gamle fundamentet i din egen Swift-kode. Hvis du vil finne ut mer om open-source Swift Foundation-biblioteket, kan du sjekke det ut på GitHub.

3. Retningslinjer for navngivning av navn

Swift 3 introduserer også noen nye API-design retningslinjer. Disse ble opprettet i et forsøk på å forenkle alle Swift APIer i tillegg til å gjøre dem konsistente. 

Unngå unødvendige ord

Den første endringen i Swift 3 for å gjøre bedre APIer fjerner unødvendige ord fra metode- og eiendomserklæringer. Denne endringen virker både som et språkfunksjon ved import av Objective-C APIer, og påvirker også retningslinjene for utviklere som skriver sin egen Swift-kode. Følgende kode inneholder noen eksempler på Swift 2-kode i forhold til funksjonelt identisk Swift 3-koden.

la farge = UIColor.redColor () // Swift 2 la farge = UIColor.red // Swift 3 "Hello World!". capitalizedString // Swift 2 "Hello World!". kapitalisert // Swift 3 // Swift 2 hvis someString .containsString ("a")  // Swift 3 hvis someString.contains ("a") 

Du vil se at Swift 3-versjonene er mer lesbare. De hvis uttalelser spesielt har en bedre flyt og ser mer ut som en engelsk setning ville.

Funksjon Parameter Etiketter

Swift 3 sletter faktisk en av endringene som er gjort i Swift 2: merkingen av den første parameteren i en funksjon. I Swift 2 ble etiketten til den første parameteren ignorert automatisk når du ringer til funksjonen. For eksempel er en funksjon deklarert som:

func addObject (objekt: AnyObject)

ville bli kalt i Swift 2 av følgende:

addObject (someObject)

Swift 3 reverserer denne endringen og ignorerer ikke lenger den første parametermerket automatisk. Dette betyr at ovennevnte funksjon vil bli kalt med følgende:

addObject (objekt: someObject)

Denne funksjonen bruker, men går nå mot utelat unødvendige ord Målet med Swift 3. For å følge de nye Swift API-designretningslinjene, bør funkliske deklarasjonen endres til:

func add (objekt: AnyObject)

Denne nye erklæringen vil da bli brukt med følgende kode:

legg til (objekt: someObject)

Dette nye formatet for funksjonenavn strømmer i tillegg til Swift 2-formatet, men har den ekstra fordelen ved å gi en etikett som er tydelig knyttet til den første parameteren til funksjonen.

Vær oppmerksom på at du fortsatt kan angi at den første parameteretiketten din Swift 3-funksjon bør ignoreres. Dette oppnås ved å bruke en _ og deretter et parameternavn som skal brukes i funksjonsdefinisjonen, for eksempel:

// Definisjon func add (_ object: AnyObject) // Tilgangsparameter gjennom 'objekt'-variabler // Usage add (someObject)

Mens dette var et veldig grunnleggende eksempel, blir dette nye formatet for deklarerende funksjoner ekstremt fordelaktig med mer kompliserte navn. For eksempel viser følgende kode hvordan noen av Swift string metodene har nå blitt endret fra Swift 2 til Swift 3.

la erstattet = someString.stringByReplacingOccurencesOfString ("a", withString: "A") // Swift 2 la erstattet = someString.replacingOccurences (av: "a", med: "A") // Swift 3 la array = listString.componentsSeparatedByString (",") // Swift 2 la array = listString.components (separatedBy: ",") // Swift 3

Lower Camel Case for Enums og Properties

Denne endringen tar sikte på å gi konsistens på tvers av alle egenskaper i Swift 3, så vel som tall. Det ble bestemt at når verdier er nærmere egenskapene enn klasser, bør de følge det samme navngivelsesformatet. 

Dette er en relativt liten endring, og en som Xcode migreringsverktøyet vil ta vare på helt når du konverterer Swift 2-kode. Det er noe som alle utviklere bør være oppmerksomme på, skjønt, når du skriver ny kode. 

Følgende er noen eksempler på hvordan denne endringen påvirker bestemte APIer.

la farge = UIColor.redColor (). CGColor // Swift 2 la farge = UIColor.red.cgColor // Swift 3 letjustering = NSTextAlignment.Center // Swift 2 let alignment = NSTextAlignment.center // Swift 3

4. Grand Central Dispatch

Ved siden av Swift 3 ble også open-source Swift-versjonen av Grand Central Dispatch (GCD) kjernebibliotek lansert. GCD er Apples rammeverk for å muliggjøre samtidig kjøring av kode på multicore-systemer. Hovedmålet med omskrivningen av dette biblioteket er å:

  • Gi samme funksjonalitet som de eksisterende C-baserte GCD-funksjonene med APIer som er designet for å fungere og lese godt sammen med andre Swift-koden.  
  • Gi et sett med tversplattform-APIer som, som Foundation-kjernebiblioteket, vil kunne brukes hvor Swift er kompatibelt.

For utviklere som har erfaring med GCD APIs på Apple-plattformer, er denne nye Swift-versjonen lett å forstå. Det følger de samme konseptene. Følgende kode viser hvordan noen vanlige GCD-oppgaver kan nå gjøres med Swift 3-kode:

// Gjør arbeid på en bakgrunnstråd la kø = DispatchQueue (etikett: "threadName") queue.async // Utfør arbeid // Gjøre arbeid på hovedtråden DispatchQueue.main.async // Utfør arbeid // Doing arbeide med en spesifisert 'Kvalitet av service' la quality = DispatchQoS.background queue.async (qos: kvalitet) // Utfør arbeid // Gjøre arbeid etter at en viss tid har gått forsinkelse = DispatchTime.now () + .seconds ( 10) DispatchQueue.main.after (når: forsinkelse) // Utfør arbeid

Hvis du vil lære mer om samtidig programmering og GCD i Swift 3, kan du sjekke ut Apples WWDC-sesjon fra dette året og Swift-versjonen av Dispatch-rammeverkets referanse.

5. Fordeler med åpen kildekode

Mens ikke akkurat en ny funksjon eller endring, er Swift 3 den første utgivelsen siden Apple åpnet programmeringsspråket i desember 2015. Å være helt åpen kildekode gir det mange fordeler, noe som vil bli enda mer tydelig i fremtidige versjoner av Swift.

For det første gjør Swift og dets kjernebiblioteker helt åpen kildekode at utviklere kan bruke Swift til å jobbe på andre plattformer og operativsystemer. For tiden er Swift kompatibel med alle Apple-plattformer i tillegg til moderne versjoner av Ubuntu. Med tiden kan Swift imidlertid sendes til andre operativsystemer, inkludert Android og Windows. Dette har potensial til å gjøre Swift til et virkelig cross-platform språk og bli brukt mer av ikke-Apple utviklere.

Når alle Swift-innvendingene er synlige for publikum, betyr det at ikke-Apple-ansatte kan bidra til språket. I tillegg til nye funksjoner kan ekspertutviklere også bidra til feilrettinger, forbedringer og optimaliseringer innen Swift.

Samlet sett vil å lage Swift åpen kildekode gi forbedringer og funksjoner til språket i en kortere tidsramme siden det vil tillate flere mennesker å bidra til det. Hvis du vil lære mer om open-source-naturen til Swift, kan du sjekke ut følgende artikkel:

  • Swift er åpen kildekode

    Den 3. desember gjorde Apple et dristig trekk, noe som gjør en av bransjens mest populære og raskest voksende språk åpen kildekode. Finn ut hva det betyr for ...
    Jordan Morgan
    Fort

Konklusjon

Jeg har vist deg noen av de viktigste endringene som kom til Swift-språket i versjon 3. Dette er en viktig utgave fordi, i tillegg til alle de nye funksjonene og API-kjernebibliotekene, gir det et klart syn på hvordan Swift vil utvikle seg i fremtiden år. Hvis endringene i Swift 3 er noen indikasjon, blir språket bare mer og morsommere for utviklere å bruke.

Som alltid, vær så snill å gi tilbakemelding og kommentarer i kommentarfeltet nedenfor. Og sjekk ut noen av våre andre kurs og opplæringsprogrammer om Swift-språket!