web-in 2010: programmation native ios (french)
TRANSCRIPT
![Page 1: Web-In 2010: Programmation Native iOS (French)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/1.jpg)
La programmation native sur iOS
Fred BrunelCTO, WhereCloud.
![Page 2: Web-In 2010: Programmation Native iOS (French)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/2.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/3.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/4.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/5.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/6.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/7.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/8.jpg)
DEMO
![Page 9: Web-In 2010: Programmation Native iOS (French)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/9.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/10.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/11.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/12.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/13.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/14.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/15.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/16.jpg)
La plateforme
![Page 17: Web-In 2010: Programmation Native iOS (French)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/17.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/18.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/19.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/20.jpg)
Cocoa Touch : MVC
Contrôleur
Vue
Modèle
Action utilisateur Mise à jour
NotifieMise à jour
![Page 21: Web-In 2010: Programmation Native iOS (French)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/21.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/22.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/23.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/24.jpg)
DEMO
![Page 25: Web-In 2010: Programmation Native iOS (French)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/25.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/26.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/27.jpg)
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)](https://reader037.vdocuments.site/reader037/viewer/2022103016/55613491d8b42aa2118b4cf4/html5/thumbnails/28.jpg)
Questions.
Fred BrunelCTO, WhereCloud.