In september bracht Apple officieel de nieuwste versie van hun nieuwe programmeertaal, Swift 3 uit. Net als Swift 2 van vorig jaar bevat deze versie veel nieuwe functies en verbeteringen, waardoor het programmeren met Swift nog beter wordt.!
Swift 3 is opgenomen in Xcode sinds versie 8.0 en kan ook worden gedownload van de website swift.org.
Als u Swift 3 in uw huidige of toekomstige projecten wilt gebruiken, biedt Xcode een uitstekende migratietool om u dit gemakkelijk te laten doen.
Voor nieuwe Swift-projecten die met Xcode 8 zijn gemaakt, wordt Swift 3 automatisch gebruikt. Nadat je voor het eerst een Swift 1 of 2-project in Xcode 8 hebt geopend, krijg je een melding om je code te converteren naar Swift 3 of Swift 2.3 code.
Als je Swift 2.3 kiest, krijg je toegang tot alle nieuwe iOS 10-, macOS Sierra-, tvOS 10- en watchOS 3-API's, maar gebruik je nog steeds de Swift 2-syntaxis. Als alternatief kunt u ervoor kiezen om uw code niet meteen te converteren en een oudere versie van Swift te blijven gebruiken. Als je klaar bent, kun je naar Bewerken> Converteren> Naar huidige Swift-syntaxis ... in de Xcode-menubalk om al uw code te converteren.
De migratiehulpprogramma zorgt voor alle wijzigingen die in uw code moeten worden aangebracht om Swift 3 van Swift 2 te gebruiken. Dit omvat het wijzigen van de namen van methoden en eigenschappen, het wijzigen van de syntaxis waar nodig en nog veel meer. Voordat u de conversie voltooit, toont Xcode de in behandeling zijnde wijzigingen voor elk van uw Swift-codebestanden. Dit betekent dat u alle wijzigingen kunt verifiëren voordat ze worden gemaakt, om er zeker van te zijn dat de migratietool geen bugs in uw project introduceert.
Een belangrijk onderdeel van de Swift 3-release was de nieuwe, open-source Foundation-bibliotheek. Terwijl ervaren MacOS- en iOS-ontwikkelaars bekend zouden zijn met het Foundation-framework, brengt deze bibliotheek een paar nieuwe functies met zich mee voor Swift-programmeurs.
De eerste onmiddellijke verandering die u zult opmerken bij het gebruik van de nieuwe Foundation API's is het ontbreken van een NS
voorvoegsel. Dit betekent dat klassen zoals NSDate
, NSTimer
en NSURL
zijn nu rechtvaardig Datum
, timer
en URL
in Swift-code. De code-migratietool in Xcode 8 zal al deze klassen automatisch voor u hernoemen, maar dit is een verandering waar alle Swift-ontwikkelaars op moeten letten bij het schrijven van nieuwe code.
Als basisbibliotheek van Swift zijn alle Foundation-API's nu compatibel met op Linux gebaseerde besturingssystemen. Omdat Swift compatibel is gemaakt met andere platforms, geldt dit ook voor de bibliotheek van de Foundation. Dit betekent dat de kernset van functionaliteit die wordt aangeboden door Foundation, zoals datum / tijdbeheer en netwerken, overal kan worden gebruikt waar Swift kan worden gebruikt. Deze platformonafhankelijke interoperabiliteit was een van de belangrijkste redenen voor het verwijderen van de NS
voorvoegsel van Foundation API's.
Ten slotte zijn veel van de Foundation-API's nu opnieuw ontworpen om beter bij de Swift-code te passen. Afhankelijk van de API betekent dit herontwerp dat Foundation nu veel beter kan profiteren van:
proberen
en vangst
blokken die werden geïntroduceerd met Swift 2.Over het algemeen is het gebruik van de nieuwe Swift Foundation-bibliotheek een veel betere ervaring vergeleken met het gebruik van het oude Foundation-framework in uw eigen Swift-code. Als je meer wilt weten over de open-source Swift Foundation-bibliotheek, kun je deze bekijken op GitHub.
Swift 3 introduceert ook enkele nieuwe richtlijnen voor API-ontwerp. Deze zijn gemaakt in een poging alle Swift-API's te vereenvoudigen en ze consistent te maken.
De eerste wijziging in Swift 3 om betere API's te maken, was het verwijderen van onnodige woorden uit methode- en eigendomsverklaringen. Deze wijziging fungeert zowel als een taalfunctie bij het importeren van Objective-C API's en beïnvloedt ook de richtlijnen voor ontwikkelaars die hun eigen Swift-code schrijven. De volgende code bevat enkele voorbeelden van de Swift 2-code in vergelijking met de functioneel identieke Swift 3-code.
laat kleur = UIColor.redColor () // Swift 2 laat kleur = UIColor.red // Swift 3 "Hello World!". hoofdletterString // Swift 2 "Hello World!". hoofdlettergebruik // Swift 3 // Swift 2 als someString .containsString ("a") // Swift 3 als someString.contains ("a")
Je zult zien dat de Swift 3-versies leesbaarder zijn. De als
met name statements hebben een betere flow en lijken meer op een Engelse zin.
Met Swift 3 wordt een van de wijzigingen in Swift 2 ongedaan gemaakt: het labelen van de eerste parameter in een functie. In Swift 2 werd het label van de eerste parameter automatisch genegeerd bij het aanroepen van de functie. Een functie bijvoorbeeld gedeclareerd als:
func addObject (object: AnyObject)
zou in Swift 2 door het volgende worden geroepen:
addObject (someObject)
Swift 3 keert deze wijziging om en negeert het eerste parameteretiket niet langer automatisch. Dit betekent dat de bovenstaande functie wordt aangeroepen met het volgende:
addObject (object: someObject)
Deze functie gebruikt echter nu het tegendeel laat onnodige woorden weg doel van Swift 3. Om de nieuwe ontwerprichtlijnen van Swift API te volgen, moet de functieverklaring worden gewijzigd in:
func add (object: AnyObject)
Deze nieuwe verklaring zou dan worden gebruikt met de volgende code:
toevoegen (object: someObject)
Dit nieuwe formaat van naamgeving van de functie stroomt zowel als het Swift 2-formaat maar heeft ook het voordeel van het leveren van een label dat duidelijk gekoppeld is aan de eerste parameter van de functie.
Houd er rekening mee dat u nog steeds kunt opgeven dat de eerste parameter die uw Swift 3-functie labelt, moet worden genegeerd. Dit wordt bereikt met behulp van een _
en vervolgens een parameternaam die moet worden gebruikt binnen de functiedefinitie, bijvoorbeeld:
// Definitie func add (_ object: AnyObject) // Toegang parameter door 'object' variabelen // Gebruik toevoegen (someObject)
Hoewel dit een zeer basaal voorbeeld was, wordt dit nieuwe formaat van verklarende functies uiterst voordelig met meer gecompliceerde namen. De volgende code laat bijvoorbeeld zien hoe sommige Swift Draad
de methoden zijn nu veranderd van Swift 2 in Swift 3.
laat vervangen = someString.stringByReplacingOccurencesOfString ("a", withString: "A") // Swift 2 laat vervangen = someString.replacingOccurences (van: "a", met: "A") // Swift 3 laat array = listString.componentsSeparatedByString (",") // Swift 2 laat array = listString.components (separatedBy: ",") // Swift 3
Deze wijziging is bedoeld om consistentie te brengen tussen alle eigenschappen in Swift 3 en opsommingen. Er is besloten dat, aangezien de opsommingswaarden dichter bij de eigenschappen liggen dan de klassen, ze hetzelfde naamgevingsformaat moeten hebben.
Dit is een relatief kleine wijziging en een die de Xcode-migratietool volledig zal afhandelen bij het converteren van de Swift 2-code. Het is iets waar alle ontwikkelaars zich bewust van moeten zijn bij het schrijven van nieuwe code.
Hieronder volgen enkele voorbeelden van de invloed van deze wijziging op bepaalde API's.
laat kleur = UIColor.redColor (). CGColor // Swift 2 laat kleur = UIColor.red.cgColor // Swift 3 laat uitlijnen = NSTextAlignment.Center // Swift 2 laat uitlijnen = NSTextAlignment.center // Swift 3
Naast Swift 3 werd ook de open-source Swift-versie van de Grand Central Dispatch (GCD) kernbibliotheek vrijgegeven. GCD is het raamwerk van Apple voor het mogelijk maken van gelijktijdige code-uitvoering op multicore-systemen. De belangrijkste doelen van het herschrijven van deze bibliotheek zijn:
Voor ontwikkelaars die ervaring hebben met de GCD API's op Apple-platforms, is deze nieuwe Swift-versie gemakkelijk te begrijpen. Het volgt dezelfde concepten. De volgende code laat zien hoe sommige gebruikelijke GCD-taken nu kunnen worden gedaan met de Swift 3-code:
// Werken aan een thread op de achtergrond laat wachtrij = DispatchQueue (label: "threadName") queue.async // Werk uitvoeren // Werken aan de hoofdthema DispatchQueue.main.async // Werk uitvoeren // Doen werken met een opgegeven 'Quality of Service' laat quality = DispatchQoS.background queue.async (qos: quality) // Execute work // Werk doen na een hoeveelheid tijd laat delay = DispatchTime.now () + .seconds ( 10) DispatchQueue.main.after (when: delay) // Execute work
Als je meer wilt weten over gelijktijdige programmering en GCD in Swift 3, kun je kijken naar Apple's WWDC-sessie van dit jaar en de Swift-versie van de Dispatch-referentiekaderreferentie.
Hoewel dit niet echt een nieuwe functie of verandering is, is Swift 3 de eerste release sinds Apple de programmeertaal in december 2015 heeft geopend. Volledig open source biedt een heleboel voordelen, die nog duidelijker zullen worden in toekomstige versies van Swift..
Ten eerste betekent het feit dat Swift en zijn kernbibliotheken volledig open source zijn, dat ontwikkelaars Swift kunnen porteren naar andere platforms en besturingssystemen. Momenteel is Swift compatibel met alle Apple-platforms, naast moderne versies van Ubuntu. In de loop van de tijd kan Swift echter worden geporteerd naar andere besturingssystemen, waaronder Android en Windows. Dit heeft de potentie om Swift een echte cross-platformtaal te maken en meer te gebruiken door niet-Apple ontwikkelaars.
Door vervolgens alle interne werking van Swift zichtbaar te maken voor het publiek, betekent dit dat niet-Apple-werknemers een bijdrage kunnen leveren aan de taal. Naast nieuwe functies kunnen deskundige ontwikkelaars ook bijdragen aan het oplossen van bugs, verbeteringen en optimalisaties binnen Swift.
Over het algemeen zal het maken van Swift open source verbeteringen en functies aan de taal in een kortere tijdsbestek brengen, omdat het meer mensen in staat zal stellen om hieraan bij te dragen. Als u meer wilt weten over de open-source aard van Swift, kunt u het volgende artikel bekijken:
Ik heb u enkele van de belangrijkste wijzigingen laten zien die in versie 3 in de Swift-taal zijn verschenen. Dit is een belangrijke release omdat deze, naast alle nieuwe functies en API's van de kernbibliotheek, een duidelijke visie biedt over hoe snel evolueert in de komende jaren. Als de veranderingen in Swift 3 een indicatie zijn, wordt de taal alleen maar leuker voor ontwikkelaars om te gebruiken.
Laat zoals altijd uw feedback en opmerkingen achter in de opmerkingen hieronder. En bekijk enkele van onze andere cursussen en tutorials over de Swift-taal!