apple : ios
DESCRIPTION
Une découverte du langage objectibe-c pour le développement des application iPhone, iPad, iPod...TRANSCRIPT
![Page 1: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/1.jpg)
APPLE : iOS
ByRICHARD Eddy
![Page 2: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/2.jpg)
2
Sommaire
1. Historique iOS
2. L’environnement de développement
3. Historique du langage
4. Comment ça marche ?
5. Questions
![Page 3: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/3.jpg)
3
HistoriqueLes différentes version iOS
![Page 4: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/4.jpg)
4
iPhone OS 1
Sortie : 29 juin 2007Sortie SDK : 6 mars 2008
Premier système d’exploitation tactile, sans stylet
![Page 5: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/5.jpg)
5
iPhone OS 2
Sortie & SDK: 11 juillet 2008
Apparition de l’ App Store
![Page 6: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/6.jpg)
6
iPhone OS 3
Sortie & SDK : 17 juin 2009
Intégration de MMS Intégration de l’application
native Dictaphone
![Page 7: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/7.jpg)
7
iOS 4
Sortie & SDK : 21 Juin 2010
MultitâcheFacetime pour passer des
appels vidéos sur le réseau Wifi
![Page 8: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/8.jpg)
8
iOS 5
Présentation publique : 6 juin 2011
Rendu disponible : 12 octobre 2011
Présence d'un centre de notifications, par l'intégration
de iMessage et de Kiosque
![Page 9: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/9.jpg)
9
iOS 6
Sortie SDK : 11 juin 2012Sortie : 19 septembre 2012
Récupération de documentsPaiement par mobile
![Page 10: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/10.jpg)
10
iOS 7
Sortie SDK : 10 juin 2013Sortie : 18 septembre 2013
Musique et la radio dans
iTuneMultitâchesiOs dans la
voiture
AirDrop App StoreAppareil photo
Centre de control
![Page 11: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/11.jpg)
11
L’environnement de développement
Xcode (version 5.0.2)
![Page 12: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/12.jpg)
12
Prérequis
![Page 13: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/13.jpg)
13
Présentation : Xcode
![Page 14: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/14.jpg)
14
Les perspectives de projet (1/4)
Master-Detail Application
OpenGL Game
![Page 15: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/15.jpg)
15
Les perspectives de projet (2/4)
Page-Based Application
Single View Application
![Page 16: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/16.jpg)
16
Les perspectives de projet (3/4)
Tabbed Application
Utility Application
![Page 17: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/17.jpg)
17
Les perspectives de projet (4/4)
Empty Application
SpriteKit Game
![Page 18: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/18.jpg)
18
Création de projet
![Page 19: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/19.jpg)
19
Enregistrement du projet
![Page 20: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/20.jpg)
20
Historique du langage
L’objective-C
![Page 21: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/21.jpg)
21
La création
C'est l'américain Brad Cox qui crée l'Objective-C au début des années 80. Il a pour objectif de rajouter des classes au langage C. Pour cela, Cox s'appuie sur un autre langage, le Smalltalk-80, qui est un langage orienté objet créé au début des années 70.
![Page 22: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/22.jpg)
22
Le développement
L’avantages de NeXTStep une API très performante et orientée objet. Mais la firme NeXT, créée par Steve Jobs. Cela donna un nouveau souffle pour Apple, qui développa un nouveau système d'exploitation pour les Macintosh basé sur NeXTStep. NeXTStep est abandonné, mais les standards du système sont toujours présents dans les frameworks Cocoa et GNUstep.
![Page 23: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/23.jpg)
23
Le framewok : GNUstep
Une implémentation libre du framework OpenStep. GNUstep fait partie du projet GNU et est inclus dans les dépôts de certaines distributions GNU/Linux.
On le définit souvent comme environnement de bureau ou système d'exploitation, étant donné ses liens au projet NeXTSTEP.
![Page 24: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/24.jpg)
24
Le framewok : Cocoa Touch
Une API dédiée à l'écriture d'applications pour iPhone, iPod Touch et iPad. Cocoa Touch ne déroge pas à la règle ; elle est spécifiquement développée pour les devices Apple.
Elle est accessible à travers Xcode.
![Page 25: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/25.jpg)
25
Comment ça marche ?
La mécanique de l’Objective-C
![Page 26: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/26.jpg)
26
L’objective-C : Définition
L'Objective-C est un langage de programmation orienté objet réflexif.
C'est une extension du C ANSI, comme le C++, mais qui se distingue de ce dernier par sa distribution dynamique des messages, son typage faible ou fort, son typage dynamique et son chargement dynamique.
![Page 27: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/27.jpg)
27
La syntaxe
L'Objective-C est fait pour être lu et compris directement par le programmeur.
Une comparaison entre deux chaînes de caractères :
C : strcmp(‘maChaine', ‘maChainedeComparaison');
Objective-C : [maChaine isEqualToString:@”maChainedeComparaison”];
![Page 28: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/28.jpg)
28
Définition d’une classe
interface (.h)
implémentation (.m)
![Page 29: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/29.jpg)
29
L’interface (1/2)
@interface nom : type
@end
![Page 30: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/30.jpg)
30
L’interface (2/2)
![Page 31: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/31.jpg)
31
L’implémentation
@implementation nom : type
@end
![Page 32: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/32.jpg)
32
Déclaration de méthodes
typeMethode : « + » pour une méthode de classe ou « - » pour une méthode d'instance;
typeRetour : type de l'objet retourné par la méthode;
nomMethode : nom de la méthode;
parametres : aux paramètres de la méthode.
typeMethode (typeRetour) nomMethode : paramètres { }
![Page 33: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/33.jpg)
33
Appel de méthode
[objet methode];
[objet methode:entree];
[objet methode:valeur1 param2:valeur2 param3:valeur3];
variable = [objet methode]; / variable = [objet methode:entree];[[objet1 methode1:param1] methode2:param2];
![Page 34: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/34.jpg)
34
Crochets ou points ?
Deux styles d'écriture peuvent être utilisés pour appeler une méthode : les crochets ou les points.
L'écriture « à point » ne fonctionne que pour les variables d'instance.
[voiture setCouleur:@"rouge"];voiture.couleur = @"rouge";
laCouleur = [voiture couleur];laCouleur = voiture.couleur;
![Page 35: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/35.jpg)
35
Cycle de vie des objets
Destruction
Utilisation
Création
![Page 36: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/36.jpg)
36
Le typage
Le typage faible :
@property (weak, nonatomic) IBOutlet UITextField *champPrenom;
Le typage fort :
@property (strong, nonatomic) IBOutlet UITextField *champPrenom;
![Page 37: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/37.jpg)
L'héritage
C'est un système très efficace qui permet une réutilisation du
code optimale, ainsi qu'une modularité des objets et des
classes.
37
NSObject
NSResponder
NSView
NSControl
NSButton NSTextField NSSlider
![Page 38: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/38.jpg)
38
Comment hériter ?
#import <Foundation/Foundation.h>
@interface Personnage : NSObject
@end
#import <Foundation/Foundation.h>#import "Personnage.h"
@interface Guerrier : Personnage
@end
![Page 39: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/39.jpg)
Les protocoles
Les protocoles sont (plus ou moins) une façon différente de faire hériter une classe, mais qui ne se focalise cette fois que sur les
méthodes.
39
ObjectDelegate Tableau
![Page 40: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/40.jpg)
40
Gérer la mémoire
La méthode alloc alloue de la mémoire pour l'objet demandé.
NSString *leGap = [[NSDateComponents alloc] init];
La méthode dealloc libère de la mémoire pour l'objet demandé.
[super dealloc];
![Page 41: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/41.jpg)
41
Les chaînes de caractère
Ceci est une chaîne de caractères 123 est plus petit que 456
@ç/w&!
![Page 42: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/42.jpg)
42
Définition
Une chaîne de caractères est une suite de zéro, un ou plusieurs caractères.
![Page 43: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/43.jpg)
43
NSString
NSString * maChaine; (NSString*) maChaine; NSString* maChaine;
Les chaînes de caractères sont manipulées Cocoa Touch
NSString:
Affecter une valeur à une chaîne lors de sa définition:
NSString *maChaine = @"Ceci est une chaîne de caractères";
![Page 44: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/44.jpg)
44
Tester l'égalité
Utilisation de l’égalité :
if (chaine1 == chaine2){}
La méthode isEqualToString de la classe NSString :
if ([chaine1 isEqualToString:chaine2]){}
![Page 45: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/45.jpg)
45
Longueur d'un NSString
La méthode length de la classe NSString :
NSString *a = @"ceci est une chaîne";NSLog(@"Longueur de la chaine : %i", [a length]);
Longueur de la chaîne : 19
![Page 46: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/46.jpg)
46
Concaténer deux NSString
Pour concaténer deux chaînes utiliserez la méthode stringWithFormat :
NSString *chaine1=@"première partie";NSString *chaine2= @" deuxième partie";NSString *chaine3;chaine3 = [NSString stringWithFormat:@"%@%@",chaine1,chaine2];NSLog(@"%@",chaine3);
première partie deuxième partie
![Page 47: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/47.jpg)
47
Les nombres−2048
82469541
![Page 48: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/48.jpg)
48
NSNumber
Pourquoi utiliser une classe dédiée à la manipulation des nombres alors que les types int, float, double, etc. sont déjà disponibles ?
Convertir des types de données;
Le type d'un objet NSNumber peut être facilement modifié en utilisant les méthodes floatValue, doubleValue, intValue, longValue, etc.
![Page 49: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/49.jpg)
49
Les dates et les heures
Jeudi 13 Février 201413/02/14
2014-02-13T06:00:00+01:00
![Page 50: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/50.jpg)
50
Définition
Plusieurs classes sont associées à la manipulation des objets date et heure dans Objective-C : NSDate, NSCalendar, NSTimeZone, NSDateComponents, NSDateFormatter.
![Page 51: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/51.jpg)
51
La date courante (1/3)
NSDate *date = [NSDate date];NSDateFormatter *miseEnForme = [[NSDateFormatter alloc] init];
[NSDate date] :: affecte la date courante
NSDateFormatter :: format d'affichage pour la date
![Page 52: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/52.jpg)
52
La date courante (2/3)
[miseEnForme setDateStyle:NSDateFormatterMediumStyle];
setDateStyle :: format d'affichage de la date
![Page 53: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/53.jpg)
53
La date courante (3/3)
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];[miseEnForme setLocale:usLocale];NSLog(@"Date au format %@: %@", [[miseEnForme locale] localeIdentifier], [miseEnForme stringFromDate:date]);
NSLocale *frLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];[miseEnForme setLocale:frLocale];NSLog(@"Date au format %@: %@", [[miseEnForme locale] localeIdentifier], [miseEnForme stringFromDate:date]);
![Page 54: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/54.jpg)
54
Une date système
NSDate *dateCourante = [NSDate date]; NSTimeInterval secondesParJour = 24 * 60 * 60;NSDate *demain = [[NSDate alloc] initWithTimeIntervalSinceNow:secondesParJour];NSDate *hier = [[NSDate alloc] initWithTimeIntervalSinceNow:-secondesParJour];
![Page 55: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/55.jpg)
55
Opérations sur les dates
NSDate *date = [NSDate date]; //Aujourd'huiNSDateComponents *leGap = [[NSDateComponents alloc] init];[leGap setYear:1];[leGap setMonth:3];[leGap setDay:10];
NSDate *nouvelleDate = [[NSCalendar currentCalendar] dateByAddingComponents:leGap toDate:date options:0];
NSLog(@"Date système : %@", date);NSLog(@"Nouvelle date : %@", nouvelleDate);
![Page 56: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/56.jpg)
56
Les tableaux
![Page 57: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/57.jpg)
57
Définition
La classe NSArray est dédiée à la manipulation de tableaux. En programmation, on parle aussi d'array.
![Page 58: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/58.jpg)
58
Définir et initialiser
NSArray *monTableau = [NSArray arrayWithObject :@"premier"];
NSArray *monTableau = [NSArray arrayWithObject :[NSNumber numberWithInt: 10]];
NSArray *monTableau = [NSArray arrayWithObjects :@"premier",@"deuxième",@"troisième",@"quatriè
me", nil];
NSArray *monTableau2 = [NSArray arrayWithArray :monTableau1];
![Page 59: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/59.jpg)
59
Accéder aux objets
containsObject renvoie la valeur true ou false si le tableau contient au moins un objet
count retourne le nombre d'objets du tableau
objectAtIndex retourne l'objet situé à l'index
lastObject retourne le dernier objet contenu dans le tableau
P0 P1 Pn
I0 I1 In
![Page 60: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/60.jpg)
60
Accéder aux objets
NSArray *monTableau = [NSArray arrayWithObjects :@"premier",@"deuxième",@"troisième",@"quatrième", nil];
if ([monTableau containsObject:@"premier"]) { NSLog(@"L'objet premier a été trouvé dans le tableau");} else { NSLog(@"L'objet premier n'a pas été trouvé dans le tableau");}
if ([monTableau containsObject:@"dixième"]) {NSLog(@"L'objet dixième a été trouvé dans le tableau");
} else { NSLog(@"L'objet dixième n'a pas été trouvé dans le tableau");
}NSLog(@"Dernier objet du tableau : %@", [monTableau lastObject]);
![Page 61: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/61.jpg)
61
QUESTIONS ?
![Page 62: Apple : iOS](https://reader036.vdocuments.site/reader036/viewer/2022062406/559196c91a28abda668b4630/html5/thumbnails/62.jpg)
62
Web discographie :
http://fr.wikipedia.org/wiki/Historique_des_versions_d%27iOhttp://en.wikipedia.org/wiki/IOS_6http://en.wikipedia.org/wiki/IOS_7http://fr.wikipedia.org/wiki/GNUstephttp://fr.openclassrooms.com/informatique/cours/creez-des-applications-pour-iphone-ipad-et-ipod-touchhttp://fr.openclassrooms.com/informatique/cours/programmez-en-objective-chttp://a-renouard.developpez.com/tutoriels/ios/base-objective-c/