Apprendre Swift à partir d'Objective-C

Variables, classes, méthodes et propriétés

Chris Ching

Traducteur

Luc Debène

Dans cette série d'articles, nous allons voir quelques-unes des différences présentes entre Swift et l'Objective-C. Ce tutoriel est plus approprié à ceux connaissant déjà l'Objective-C (au moins ses bases) et qui veulent connaître quels sont les équivalents avec Swift.

Eh bien, allons-y ! Voici un guide très pratique à garder sous la main durant votre apprentissage de Swift.

Retrouvez la première partie de ce cours : Apprendre Swift à partir d'Objective-C : Introduction

Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas. Commentez .

- Titre : Apprendre Swift à partir d'Objective-C

- Auteur : Chris Ching

- Traducteur : Luc Debène

- Parution : 7 août 2014

- Licence : Copyright ® 2014 Chris Ching. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Variables et constantes

- I-A. Déclarer un entier comme variable

- I-A-1. Objective-C

- I-A-2. Swift

- I-B. Assigner une valeur à une variable

- I-B-1. Objective-C

- I-B-2. Swift

- I-C. Déclarer et assigner des constantes

- I-C-1. Objective-C

- I-C-2. Swift

- II. Classes

- II-A. Définir une classe

- II-A-1. Objective-C

- II-A-2. Swift

- II-B. Créer une nouvelle instance de classe

- II-B-1. Objective-C

- II-B-2. Swift

- II-C. L'héritage

- II-C-1. Objective-C

- II-C-2. Swift

- III. Les méthodes

- III-A. Déclaration de méthode

- III-A-1. Objective-C

- III-A-2. Swift

- III-B. Appeler une méthode

- III-B-1. Objective-C

- III-B-2. Swift

- III-C. Déclarer une méthode avec plusieurs paramètres

- III-C-1. Objective-C

- III-C-2. Swift

- III-D. Appeler une méthode avec plusieurs paramètres

- III-D-1. Objective-C

- III-D-2. Swift

- III-E. Surcharger une méthode

- III-E-1. Objective-C

- III-E-2. Swift

- IV. Propriétés

- IV-A. Déclarer une propriété

- IV-A-1. Objective-C

- IV-A-2. Swift

- IV-B. Surcharger les getters et setters

- IV-B-1. Objective-C

- IV-B-2. Swift

- V. Remerciements Developpez

- VI. Apprendre Swift à partir d'Objective-C

I - Variables et constantes

Swift rend la déclaration de variables moins confuse pour les débutants, car elle ressemble plus au langage naturel. Notez également que le point-virgule à la fin des déclarations disparaît.

I-A - Déclarer un entier comme variable

I-A-1 - Objective-C

En Objective-C, il faut toujours déclarer explicitement le type de la variable que vous déclarez.

1. int highScore;

2. NSString *nomJoueur;

I-A-2 - Swift

Avec Swift, le mot-clé "var" est utilisé pour déclarer une variable, sans avoir besoin de spécifier son type, s'il peut être déterminé par ce que vous attribuez à la variable. Notez également qu'avec Swift, la classe NSString est délaissée pour la classe String.

1. var highScore: Int

2. var nomJoueur: String

I-B - Assigner une valeur à une variable

Notez que lorsque l'on crée une chaîne de caractères pour l'assigner à une variable de type String, le "@" n'est pas nécessaire pour Swift.

I-B-1 - Objective-C

1. highScore = 1000;

2. nomJoueur = @"Joe Chan";

I-B-2 - Swift

1. highScore = 1000

2. nomJoueur = "Joe Chan"

I-C - Déclarer et assigner des constantes

Swift utilise le mot-clé "let" pour déclarer des constantes.

I-C-1 - Objective-C

1. NSString *const couleurCiel = @"Blue"

2. int const joursDanslAnnee = 365;

I-C-2 - Swift

1. let couleurCiel = "Blue"

2. let joursDanslAnnee = 365

II - Classes

II-A - Définir une classe

Une différence notable dans la définition des classes avec Swift est l'absence de fichier d'en-tête (.h) et de fichier d'implémentation (.m).

II-A-1 - Objective-C

Fichier d'en-tête (.h)

1. @interface CustomClass : NSObject

2. @end

Fichier d'implémentation (.m)

1. @implementation CustomClass

2. @end

II-A-2 - Swift

1. class CustomClass {

2. }

II-B - Créer une nouvelle instance de classe

Créer de nouvelles classes en Swift se fait avec le nom de la classe suivi d'une paire de parenthèses.

II-B-1 - Objective-C

1. CustomClass *instance = [[CustomClass alloc] init];

2. CustomClass *secondInstance = [CustomClass new];

II-B-2 - Swift

1. var instance = CustomClass()

II-C - L'héritage

L'héritage est très similaire dans les deux langages.

II-C-1 - Objective-C

Dans le fichier d'en-tête (.h)

1. @interface PetiteVoiture : Voiture

2. @end

II-C-2 - Swift

1. class PetiteVoiture : Voiture {

2. }

III - Les méthodes

III-A - Déclaration de méthode

La déclaration de méthode est plus simple pour les débutants. Notez la façon dont le type de retour de la méthode est spécifié en Swift.

III-A-1 - Objective-C

Dans le fichier d'en-tête (.h)

1. - (int) getValeur;

Dans le fichier d'implémentation (.m)

1. - (int) getValeur

2. {

3. return 50000;

4. }

III-A-2 - Swift

1. func getValeur() -> Int {

2. return 50000;

3. }

III-B - Appeler une méthode

Souvent, les débutants ne savent pas quand utiliser les crochets ("[" et "]"). Swift abandonne les crochets pour l'appel de méthode et utilise une notation pointée comme pour appeler une propriété en Objective-C ("maClasse.maPropriete"). Notez les parenthèses pour l'appel de méthode dans l'exemple en Swift.

III-B-1 - Objective-C

1. PetiteVoiture *maVoiture = [[PetiteVoiture alloc] init];

2. [maVoiture getValeur];

III-B-2 - Swift

1. Var maVoiture = PetiteVoiture()

2. maVoiture.getValeur()

III-C - Déclarer une méthode avec plusieurs paramètres

En Swift , une méthode avec plusieurs paramètres est construite de la même manière qu'en Objective C ; plusieurs "label:nomParametre" à la suite pour autant de paramètres.

III-C-1 - Objective-C

1. - (void)changerHuile:(int)huile liquideTransmission:(int)liquide

2. {

3. }

III-C-2 - Swift

1. func changerHuile(huile:Int, liquideTransmission:Int)

2. {

3. }

III-D - Appeler une méthode avec plusieurs paramètres

III-D-1 - Objective-C

1. [maVoiture changerHuile:10 liquideTransmission:10];

III-D-2 - Swift

1. maVoiture.changerHuile(10, liquideTransmission:10);

III-E - Surcharger une méthode

En Objective-C, vous pouvez surcharger une méthode de la superclasse en définissant une méthode avec la même signature dans la sous-classe. En Swift, il convient d'utiliser le mot-clé "override" pour définir de manière claire qu'il s'agit d'une surcharge de méthode.

III-E-1 - Objective-C

Dans le fichier d'implémentation (.m)

1. - (void) uneMethode

2. {

3. [super uneMethode];

4. //Autres instructions de surcharge

5. }

III-E-2 - Swift

1. override func uneMethode()

2. {

3. super.uneMethode()

4. //Autres instructions de surcharge

5. }

IV - Propriétés

IV-A - Déclarer une propriété

La déclaration de propriétés en Swift est assez évidente : elles se déclarent de la même façon qu'une variable, la différence étant à quel endroit vous la déclarez.

En Swift, il est nécessaire d'attribuer une valeur à chaque propriété, que ce soit lors de la déclaration ou de l'initialisation.

IV-A-1 - Objective-C

Dans le fichier d'implémentation (.m)

1. @interface PetiteVoiture ()

2. @property NSString *transmission;

3. @property int nombreSieges;

4. @end

6. @implementation PetiteVoiture

7. - (id)init

8. {

9. self = [super init];

10. if (self)

11. {

12. self.transmission = @"Automatique";

13. self.nombreSieges = 4;

14. }

15. return self;

16. }

17. @end

IV-A-2 - Swift

1. class PetiteVoiture:Voiture {

2. var transmission: String = "Automatique"

3. var nombreSieges: Int

5. init()

6. {

7. self.nombreSieges = 4

8. super.init()

9. }

10. }

IV-B - Surcharger les getters et setters

En Objective-C moderne, les getters et setters sont créés automatiquement, mais vous pouvez les surcharger. Ceci est également vrai en Swift. La syntaxe est plus visuelle, car elle est groupée avec la déclaration.

IV-B-1 - Objective-C

1. - (void)setTransmission:(NSString *)transmission

2. {

3. _transmission = transmission;

4. }

6. - (NSString *)transmission

7. {

8. return _transmission;

9. }

IV-B-2 - Swift

1. var transmission:String {

2. get {

3. return _transmission

4. }

5. set {

6. _transmission = nouvelleValeur

7. }

8. }

V - Remerciements Developpez

Nous remercions, Chris Ching, de nous avoir aimablement autorisé à publier son article. Cet article est une traduction autorisée dont le texte original peut être trouvé sur codewithchris.com. Nous remercions aussi Askirkela pour sa traduction, LeBzul pour sa relecture technique ainsi que jacques_jean. pour sa relecture orthographique.

VI - Apprendre Swift à partir d'Objective-C

Retrouvez toute la série Apprendre Swift à partir d'Objective C