Web-In 2010: Programmation Native iOS (French)

Post on 24-May-2015

600 views 2 download

Tags:

Transcript of Web-In 2010: Programmation Native iOS (French)

La programmation native sur iOS

Fred BrunelCTO, WhereCloud.

fred@wherecloud.com

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

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

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

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)

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

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

DEMO

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

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];

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

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;...

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

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];

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);}

La plateforme

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

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 »

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

Cocoa Touch : MVC

Contrôleur

Vue

Modèle

Action utilisateur Mise à jour

NotifieMise à jour

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

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)

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 !

DEMO

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

Ressources

Apple Developer Portal

- http://developer.apple.com/

- Cocoa Fundamental Guide

- The Objective-C Programming Guide

Ressources

Livres

- Learning iPhone ProgrammingAlasdair Allan, O’Reilly

- iPhone App Development: The Missing Manual

Craig Hockenberry, O’Reilly

Questions.

Fred BrunelCTO, WhereCloud.

fred@wherecloud.com