15Sep

Quelques nouveautés de Swift 3

Apple a annoncé dans sa dernière WWDC 2016 une nouvelle version de leur IDE Xcode 8 qui intègre deux versions de Swift  : 2.3 et 3, pour permettre une migration facile aux développeurs vers la nouvelle version, dans cet article on va voir quelques nouveautés de Swift 3.

 

Tous les paramètres des fonctions ont des étiquettes par défaut

 

Avec Swift 2.x on a pas besoin de spécifier l’étiquette du premier paramètre, avec Swift 3 tous les paramètres sont obligatoire par default:

 

var fruits = ["Ananas", "Orange", "Abricots", "Pomme"]

// Swift 2
fruits.indexOf("Pomme")

// Swift 3
fruits.index(of: "Pomme")

 

Le préfix « NS » du framework Foundation

 

Avec Swift 3, le fameux préfix NS de du framework Foundation commence à disparaitre :

 

// Swift 2
NSTimer.scheduledTimerWithTimeInterval(0.35, target: self, selector: #selector(doSomething), userInfo: nil, repeats: true)

// Swift 3
Timer.scheduledTimer(timeInterval: 0.35, target: self, selector: #selector(doSomething), userInfo: nil, repeats: true)

 

Syntaxe plus simple

 

La syntaxe est devenue plus simple en omettant les mots inutiles :

 

// Swift 2
let blue = UIColor.blueColor()

// Swift 3
let blue = UIColor.blue

// Swift 2
" Hello ".stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet())

// Swift 3
" Hello ".trimmingCharacters(in: .whitespacesAndNewlines)

// Swift 2
"Fethi".containsString("hi")

// Swift 3
"Fethi".contains("hi")

// Swift 2
"hello, world".capitalizedString

// Swift 3
"hello, world".capitalized

 

Les énumérations et les propriétés

 

Les énumérations et les propriétés commencent par une minuscule :

 

// Swift 2
UIInterfaceOrientationMask.Portrait

// Swift 3
UIInterfaceOrientationMask.portrait

// Swift 2
NSTextAlignment.Left

// Swift 3
NSTextAlignment.left

 

Les fonctions du langage C

 

Swift 3 introduit des attributs pour les fonctions du langage C, par exemple « CGContext » est maintenant représenté par un objet :

 

// Swift 2
let ctx = UIGraphicsGetCurrentContext()

let rectangle = CGRect(x: 0, y: 0, width: 512, height: 512)
CGContextSetFillColorWithColor(ctx, UIColor.redColor().CGColor)
CGContextSetStrokeColorWithColor(ctx, UIColor.blackColor().CGColor)
CGContextSetLineWidth(ctx, 10)
CGContextAddRect(ctx, rectangle)
CGContextDrawPath(ctx, .FillStroke)

UIGraphicsEndImageContext()

// Swift 3
if let ctx = UIGraphicsGetCurrentContext() {

    let rectangle = CGRect(x: 0, y: 0, width: 512, height: 512)
    ctx.setFillColor(UIColor.red.cgColor)
    ctx.setStrokeColor(UIColor.black.cgColor)
    ctx.setLineWidth(10)
    ctx.addRect(rectangle)
    ctx.drawPath(using: .fillStroke)

    UIGraphicsEndImageContext()
}

 

Un autre exemple du Grand Central Dispatch « GCD » qui gère les tâches asynchrone :

// Swift 2
let queue = dispatch_queue_create("com.test.myqueue", nil)
dispatch_async(queue) {
    print("Bonjour")
}

// Swift 3
let queue = DispatchQueue(label: "com.test.myqueue")
queue.async {
    print("Bonjour")
}

 

Les verbes et les noms

 

Quelques changements logiques dans les verbes et les noms utilisés :

 

let numbers = [2, 4, 5, 99]

// Swift 2
numbers.enumerate()

// Swift 3
numbers.enumerated()

// Swift 2
numbers.reverse()

// Swift 3
numbers.reversed()

// Swift 2
numbers.sort()

// Swift 3
numbers.sorted()

// Swift 2
numbers.sortInPlace()

// Swift 3
numbers.sort()

 

@end

 

Et pour plus d’information sur Swift 3 :

– L’Ebook officiel d’Apple : iTunes

– WWDC 2016 : What’s New in Swift

– Le guide du langage Swift 3 : developer.apple.com

Partager cet Article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont marqués *

*

Fethi El Hassasna © Copyright 2017, Tous droits réservés