28
La programmation native sur iOS Fred Brunel CTO, WhereCloud. [email protected]

Web-In 2010: Programmation Native iOS (French)

Embed Size (px)

Citation preview

Page 1: Web-In 2010: Programmation Native iOS (French)

La programmation native sur iOS

Fred BrunelCTO, WhereCloud.

[email protected]

Page 2: Web-In 2010: Programmation Native iOS (French)

Programme de cet atelier

Pourquoi programmer en natif ?

Les outils autour de la plateforme iOS

Comprendre les concepts et les bases de la programmation sur la plateforme iOS

Démos

Page 3: Web-In 2010: Programmation Native iOS (French)

Pourquoi programmer en natif ?Accès à toutes les fonctionnalités de l’iPhone et du iPad

Avoir les meilleures performances

Contrôle du « workflow »

Accès aux dernières innovations d’Apple

Distribution sur l’App Store

Page 4: Web-In 2010: Programmation Native iOS (French)

Les enjeux du natif

Programmation plus bas-niveauPas d'équivalent au DOM ou de CSSUn cycle de développement lourdPlus proche d’une application « desktop » que d’une application webAndroid ou Windows Phone 7 ont le même modèle

Page 5: Web-In 2010: Programmation Native iOS (French)

Par où commencer?

Le kit de développement pour iOS

- Une suite d’outils : Xcode

- Une bibliothèque : Cocoa Touch

- Un langage : Objective-C

Un compte développeur Apple ($99 par an)

Page 6: Web-In 2010: Programmation Native iOS (French)

Xcode

Un outil commun au développement Mac OS X et iOS

Un éditeur de code

Un éditeur de modèle de données

Un compilateur, débogueur, profilage

Un simulateur iPhone & iPad

Page 7: Web-In 2010: Programmation Native iOS (French)

Interface Builder

Un assistant à la création d’interface utilisateur

Permet d’organiser, de configurer les éléments visuels et les lier a « une partie » de la logique

Equivalent au XAML en .NET ou au Android XML

Page 8: Web-In 2010: Programmation Native iOS (French)

DEMO

Page 9: Web-In 2010: Programmation Native iOS (French)

Objective-C

Créé dans les années 80 et popularisé par la plateforme NeXTstep

Objective-C est un sur-ensemble de ANSI C avec une syntaxe dérivée de Smalltalk

Orienté-objet et dynamique

Compilé par GNU C/C++, il est possible de mélanger C/C++/Objective-C

Page 10: Web-In 2010: Programmation Native iOS (French)

Objective-C : Messages

En Objective-C on n’appelle pas une méthode, on envoie un message

NSString *string = @"2010";NSUInteger length = [string length];NSMutableArray *array = [[NSMutableArray alloc] init];[array insertObject:string atIndex:0];id object = [array objectAtIndex:0];

Page 11: Web-In 2010: Programmation Native iOS (French)

Objective-C : Interfaces

Un fichier pour l’interface (.h) ; un fichier pour l'implantation (.m)

@interface User : NSObject { NSString *username; NSString *password;}

@property (nonatomic, retain) NSString *username;@property (nonatomic, retain) NSString *password;

- (void)doSomething;

@end

@implementation User

@synthesize username, password;

- (void)doSomething { return; }

@end

Page 12: Web-In 2010: Programmation Native iOS (French)

Objective-C : Propriétés

Déclare les variables d’instance

Génère automatiquement les accesseurs

User *user = [[User alloc] init];user.username = @"Fred";NSLog(@"%@ %@", user.username, [user username]);

@property (nonatomic, retain) NSString *username;...

Page 13: Web-In 2010: Programmation Native iOS (French)

Objective-C : Gestion de la mémoireSemi-automatique sous iOSGestion par compteur de référence ; tout objet maintient un compteur !Le compteur est manipulé par retain, copy et releaseLes propriétés facilitent la gestionUniformité dans les bibliothèques

Page 14: Web-In 2010: Programmation Native iOS (French)

Objective-C : Gestion de la mémoireUser *user = [[User alloc] init]; // retainCount = 1user.username = @"Fred";[user release]; // retainCount = 0

User *user = [[[User alloc] init] autorelease];user.username = @"Fred";

NSNumber *boolean = [NSNumber numberWithBool:YES];

Page 15: Web-In 2010: Programmation Native iOS (French)

Objective-C : Boucles

Boucles au standard ANSI C

Enumérations rapides

NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; for (NSString *element in array) { NSLog(@"%@", element);}

Page 16: Web-In 2010: Programmation Native iOS (French)

La plateforme

Page 17: Web-In 2010: Programmation Native iOS (French)

Cocoa Touch

Cocoa est un ensemble de bibliothèques orientés-objet ; la boite à outils du développeur iOS.

- Foundation, UIKit, Core Data, Core Animation, Core Location

Cocoa Touch = Foundation + UIKit

Certaines bibliothèques sont encore en C

Page 18: Web-In 2010: Programmation Native iOS (French)

Cocoa Touch : Design PatternsCocoa Touch implante beaucoup de « design patterns » connus

3 sont importants :

- Le modèle-vue-contrôleur (MVC)

- La délégation

- Le « target-action »

Page 19: Web-In 2010: Programmation Native iOS (French)

Cocoa Touch : MVC

Divise le code en fonctions indépendantes

Toutes les applications iOS sont basées sur ce modèle

- Le modèle encapsule les données

- Les vues définissent les éléments de l’interface utilisateur

- La contrôleur est le pont entre le modèle et les vues ; implante la logique

Page 20: Web-In 2010: Programmation Native iOS (French)

Cocoa Touch : MVC

Contrôleur

Vue

Modèle

Action utilisateur Mise à jour

NotifieMise à jour

Page 21: Web-In 2010: Programmation Native iOS (French)

Cocoa Touch : MVC

La plupart des vues et contrôleurs sont déjà disponibles dans Cocoa Touch

- UIButton, UITextField, UITableView

- UIViewController, UINavigationController

Les modèles sont généralement des NSArray ou des objets Core Data

Page 22: Web-In 2010: Programmation Native iOS (French)

Cocoa Touch: Délégation et « target-action »La délégation permet d’implanter du comportement sans sous-classer; au moyen de protocoles

- Core Location, UITableViewDelegate

Le « target-action » permet de notifier d’une action (ex. : button touché) en envoyant un message à un objet (target)

Page 23: Web-In 2010: Programmation Native iOS (French)

Créer une application

1. Créer un nouveau projet a partir d’un patron déjà existant dans Xcode

2. Créer le modèle et contrôleurs

3. Créer les vues dans Interface Builder

4. Lier les vues et les contrôleurs

5. Compiler et débogger !

Page 24: Web-In 2010: Programmation Native iOS (French)

DEMO

Page 25: Web-In 2010: Programmation Native iOS (French)

Conseils

Bien penser son application avant de passer à l’implantation

Ne pas sous-estimer le temps de développement

- en moyenne ~300 heures

- 10 000 lignes de code

Page 26: Web-In 2010: Programmation Native iOS (French)

Ressources

Apple Developer Portal

- http://developer.apple.com/

- Cocoa Fundamental Guide

- The Objective-C Programming Guide

Page 27: Web-In 2010: Programmation Native iOS (French)

Ressources

Livres

- Learning iPhone ProgrammingAlasdair Allan, O’Reilly

- iPhone App Development: The Missing Manual

Craig Hockenberry, O’Reilly

Page 28: Web-In 2010: Programmation Native iOS (French)

Questions.

Fred BrunelCTO, WhereCloud.

[email protected]