Questo settembre, Apple ha ufficialmente rilasciato l'ultima versione del loro nuovo linguaggio di programmazione, Swift 3. Proprio come Swift 2 l'anno scorso, questa versione contiene molte nuove funzionalità e miglioramenti, che rendono ancora più facile la programmazione con Swift!
Swift 3 è incluso con Xcode dalla versione 8.0 e può anche essere scaricato dal sito web swift.org.
Se si desidera utilizzare Swift 3 nei progetti attuali o futuri, Xcode fornisce uno strumento di migrazione eccellente che consente di farlo facilmente.
Per i nuovi progetti Swift creati con Xcode 8, Swift 3 verrà utilizzato automaticamente. All'apertura di un progetto Swift 1 o 2 in Xcode 8 per la prima volta, ti verrà presentato un avviso per convertire il codice in codice Swift 3 o Swift 2.3.
Scegliendo Swift 2.3 potrai accedere a tutte le nuove API iOS 10, macOS Sierra, tvOS 10 e watchOS 3 ma continuerai a utilizzare la sintassi Swift 2. In alternativa, puoi scegliere di non convertire il tuo codice subito e continuare a utilizzare una versione precedente di Swift. Quando sei pronto, puoi andare a Modifica> Converti> Alla sintassi Swift attuale ... nella barra dei menu Xcode per convertire tutto il codice.
Lo strumento di migrazione si prende cura di tutte le modifiche che devono essere apportate al tuo codice per adottare Swift 3 da Swift 2. Ciò include la modifica dei nomi di metodi e proprietà, la modifica della sintassi dove necessario e numerose altre cose. Prima di completare la conversione, Xcode ti mostrerà le modifiche in sospeso per ciascuno dei tuoi file di codice Swift. Ciò significa che è possibile verificare tutte le modifiche prima che vengano apportate, solo per assicurarsi che lo strumento di migrazione non stia introducendo bug nel progetto.
Una parte importante della versione di Swift 3 è stata la nuova libreria Foundation open source. Mentre esperti sviluppatori di macOS e iOS conoscono bene il framework Foundation, questa libreria offre alcune nuove funzionalità con i programmatori Swift.
La prima modifica immediata che noterai quando usi le nuove API Foundation è la mancanza di un NS
prefisso. Ciò significa che classi come NSDate
, NSTimer
e NSURL
ora sono solo Data
, Timer
e URL
nel codice Swift. Lo strumento di migrazione del codice in Xcode 8 rinominerà automaticamente tutte queste classi per te, ma questo è un cambiamento di cui tutti gli sviluppatori Swift devono essere a conoscenza quando scrivono un nuovo codice.
Successivamente, essendo una libreria principale di Swift, tutte le API Foundation sono ora compatibili con i sistemi operativi basati su Linux. Poiché Swift è reso compatibile con altre piattaforme, anche la libreria della Fondazione. Ciò significa che il set base di funzionalità fornito da Foundation, come la gestione di data / ora e networking, può essere utilizzato ovunque sia possibile utilizzare Swift. Questa interoperabilità multipiattaforma è stata una delle principali motivazioni alla base della rimozione del NS
prefisso da Foundation APIs.
Infine, molte delle API Foundation sono state ridisegnate per adattarsi meglio al codice Swift. Ad esempio, a seconda dell'API, questa riprogettazione significa che la Fondazione ora può sfruttare molto meglio:
provare
e catturare
blocchi introdotti con Swift 2.Nel complesso, l'uso della nuova libreria Swift Foundation è un'esperienza molto migliore rispetto all'utilizzo del vecchio framework Foundation nel proprio codice Swift. Se vuoi saperne di più sulla libreria Swift Foundation open source, puoi verificarlo su GitHub.
Swift 3 introduce anche alcune nuove linee guida per la progettazione dell'API. Questi sono stati creati nel tentativo di semplificare tutte le API Swift oltre a renderle coerenti.
La prima modifica apportata a Swift 3 per creare API migliori è stata la rimozione di parole inutili dal metodo e dalle dichiarazioni di proprietà. Questo cambiamento agisce sia come caratteristica del linguaggio quando si importano le API Objective-C, ma anche le linee guida per gli sviluppatori che scrivono il proprio codice Swift. Il seguente codice contiene alcuni esempi di codice Swift 2 rispetto al codice Swift 3 funzionalmente identico.
let color = UIColor.redColor () // Swift 2 lascia color = UIColor.red // Swift 3 "Hello World!". capitalizedString // Swift 2 "Hello World!". maiuscola // Swift 3 // Swift 2 se someString .containsString ("a") // Swift 3 se someString.contains ("a")
Vedrai che le versioni di Swift 3 sono più leggibili. Il Se
in particolare le affermazioni hanno un flusso migliore e assomigliano più a una frase inglese.
Swift 3 in realtà annulla una delle modifiche apportate in Swift 2: l'etichettatura del primo parametro in una funzione. In Swift 2, l'etichetta del primo parametro è stata automaticamente ignorata quando si chiama la funzione. Ad esempio, una funzione dichiarata come:
func addObject (oggetto: AnyObject)
sarebbe chiamato in Swift 2 dal seguente:
addObject (someObject)
Swift 3 inverte questa modifica e non ignora più automaticamente la prima etichetta di parametro. Ciò significa che la funzione precedente verrebbe chiamata con il seguente:
addObject (oggetto: someObject)
Questa funzione, tuttavia, ora va contro il ometti parole inutili obiettivo di Swift 3. Per seguire le nuove linee guida di progettazione dell'API Swift, la dichiarazione della funzione deve essere modificata in:
func add (oggetto: AnyObject)
Questa nuova dichiarazione verrà quindi utilizzata con il seguente codice:
add (oggetto: someObject)
Questo nuovo formato di denominazione delle funzioni scorre così come il formato Swift 2 ma ha l'ulteriore vantaggio di fornire un'etichetta chiaramente collegata al primo parametro della funzione.
Si noti che è ancora possibile specificare che il primo parametro che etichetta la funzione Swift 3 debba essere ignorato. Questo si ottiene usando a _
e quindi un nome parametro da utilizzare all'interno della definizione della funzione, ad esempio:
// Definizione func add (_ object: AnyObject) // Parametro di accesso tramite variabili 'object' // Usage add (someObject)
Mentre questo era un esempio di base, questo nuovo formato di funzioni di dichiarazione diventa estremamente utile con nomi più complicati. Ad esempio, il codice seguente mostra come alcuni dei Swift Stringa
i metodi sono ora passati da Swift 2 a Swift 3.
let replace = someString.stringByReplacingOccurencesOfString ("a", withString: "A") // Swift 2 lascia sostituito = someString.replacingOccurences (di: "a", con: "A") // Swift 3 let array = listString.componentsSeparatedByString (",") // Swift 2 lascia array = listString.components (separatedBy: ",") // Swift 3
Questo cambiamento mira a portare coerenza tra tutte le proprietà in Swift 3 e nelle enumerazioni. È stato deciso che, poiché i valori di enumerazione sono più vicini alle proprietà rispetto alle classi, dovrebbero seguire lo stesso formato di denominazione.
Questo è un cambiamento relativamente minore e uno di cui lo strumento di migrazione Xcode si prenderà cura completamente durante la conversione del codice Swift 2. È qualcosa di cui tutti gli sviluppatori dovrebbero essere consapevoli, tuttavia, quando scrivono un nuovo codice.
Di seguito sono riportati alcuni esempi di come questa modifica influisce su determinate API.
let color = UIColor.redColor (). CGColor // Swift 2 let color = UIColor.red.cgColor // Swift 3 let alignment = NSTextAlignment.Center // Swift 2 let alignment = NSTextAlignment.center // Swift 3
Oltre a Swift 3 è stata rilasciata anche la versione Swift open source della libreria di base Grand Central Dispatch (GCD). GCD è il framework di Apple per abilitare l'esecuzione simultanea di codice su sistemi multicore. Gli obiettivi principali della riscrittura di questa libreria sono:
Per gli sviluppatori esperti delle API GCD su piattaforme Apple, questa nuova versione di Swift sarà facile da capire. Segue gli stessi concetti. Il codice seguente mostra come alcune normali attività GCD possono ora essere eseguite con il codice Swift 3:
// Lavorare su un thread in background lascia queue = DispatchQueue (label: "threadName") queue.async // Esegui lavoro // Esecuzione del lavoro sul thread principale DispatchQueue.main.async // Esegui lavoro // Doing funziona con una specifica 'Qualità del servizio' lascia quality = DispatchQoS.background queue.async (qos: quality) // Esegui il lavoro // Eseguendo il lavoro dopo un certo lasso di tempo, lasciare il ritardo = DispatchTime.now () + .seconds ( 10) DispatchQueue.main.after (when: delay) // Esegui lavoro
Se vuoi saperne di più sulla programmazione simultanea e GCD in Swift 3, puoi controllare la sessione WWDC di Apple da quest'anno e la versione Swift del riferimento framework Dispatch.
Sebbene non sia esattamente una nuova funzionalità o cambiamento, Swift 3 è la prima versione da quando Apple ha aperto il linguaggio di programmazione a dicembre 2015. Essere completamente open source porta con sé molti vantaggi, che diventeranno ancora più evidenti nelle future versioni di Swift.
In primo luogo, rendere Swift e le sue librerie principali completamente open source significa che gli sviluppatori possono portare Swift a lavorare su altre piattaforme e sistemi operativi. Attualmente Swift è compatibile con tutte le piattaforme Apple oltre alle moderne versioni di Ubuntu. Con il tempo, tuttavia, Swift può essere trasferito su altri sistemi operativi, tra cui Android e Windows. Questo ha il potenziale per rendere Swift un vero linguaggio multipiattaforma ed essere usato di più dagli sviluppatori non Apple.
Successivamente, avere tutti i meccanismi interni di Swift visibili al pubblico significa che i dipendenti non Apple possono contribuire alla lingua. Oltre alle nuove funzionalità, gli sviluppatori esperti possono contribuire anche a correzioni di bug, miglioramenti e ottimizzazioni all'interno di Swift.
Complessivamente, rendere Swift open source porterà miglioramenti e funzionalità alla lingua in un periodo di tempo più breve poiché consentirà a più persone di contribuire ad essa. Se vuoi saperne di più sulla natura open source di Swift, puoi consultare il seguente articolo:
Ti ho mostrato alcune delle modifiche più importanti apportate al linguaggio Swift nella versione 3. Questa è una versione importante perché, oltre a tutte le nuove funzionalità e le API della libreria principale, fornisce una chiara visione di come Swift si evolverà negli anni futuri. Se le modifiche apportate a Swift 3 sono indicative, la lingua diventerà sempre più piacevole da utilizzare per gli sviluppatori.
Come sempre, si prega di essere sicuri di lasciare il vostro feedback e commenti nella sezione commenti qui sotto. E dai un'occhiata ad alcuni dei nostri altri corsi e tutorial sulla lingua Swift!