2. 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
3. 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
4. Les enjeux du natif
Programmation plus bas-niveau
Pas d'équivalent au DOM ou de CSS
Un cycle de développement lourd
Plus proche d’une application « desktop »
que d’une application web
Android ou Windows Phone 7 ont le même
modèle
5. 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)
6. 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
7. 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
9. 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
10. 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];
11. 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
13. Objective-C :
Gestion de la mémoire
Semi-automatique sous iOS
Gestion par compteur de référence ; tout
objet maintient un compteur !
Le compteur est manipulé par retain, copy
et release
Les propriétés facilitent la gestion
Uniformité dans les bibliothèques
17. 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
18. Cocoa Touch : Design
Patterns
Cocoa Touch implante beaucoup de
« design patterns » connus
3 sont importants :
- Le modèle-vue-contrôleur (MVC)
- La délégation
- Le « target-action »
19. 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
20. Cocoa Touch : MVC
Contrôleur
Vue
Modèle
Action utilisateur Mise à jour
NotifieMise à jour
21. 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
22. 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)
23. 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 !
25. 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