Web-In 2010: Programmation Native iOS (French)
-
Upload
fred-brunel -
Category
Documents
-
view
602 -
download
2
Transcript of Web-In 2010: Programmation Native iOS (French)
La programmation native sur iOS
Fred BrunelCTO, WhereCloud.
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.