6. iPhone OS 3
Sortie & SDK : 17 juin 2009
Intégration de MMS
Intégration de l’application native
Dictaphone
6
7. iOS 4
Sortie & SDK : 21 Juin 2010
Multitâche
Facetime pour passer des appels
vidéos sur le réseau Wifi
7
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
8
9. iOS 6
Sortie SDK : 11 juin 2012
Sortie : 19 septembre 2012
Récupération de documents
Paiement par mobile
9
10. iOS 7
Sortie SDK : 10 juin 2013
Sortie : 18 septembre 2013
Musique et la
radio dans
iTune
Multitâches
iOs dans la
voiture
AirDrop
App Store
Appareil photo
Centre de
control
10
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.
21
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.
22
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.
23
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.
24
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.
26
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”];
27
32. Déclaration de méthodes
typeMethode (typeRetour) nomMethode : paramètres { }
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.
32
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;
34
35. Cycle de vie des objets
Création
Utilisation
Destruction
35
36. Le typage
Le typage faible :
@property (weak, nonatomic) IBOutlet UITextField *champPrenom;
Le typage fort :
@property (strong, nonatomic) IBOutlet UITextField *champPrenom;
36
37. L'héritage
NSObject
NSResponder
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.
NSView
NSControl
NSButton
NSTextField
NSSlider
37
39. 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.
Object
Delegate
Tableau
39
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];
40
43. NSString
Les chaînes de caractères sont
manipulées Cocoa Touch
NSString:
NSString * maChaine;
(NSString*) maChaine;
NSString* maChaine;
Affecter une valeur à une chaîne lors de sa définition:
NSString *maChaine = @"Ceci est une chaîne de caractères";
43
44. Tester l'égalité
Utilisation de l’égalité :
if (chaine1 == chaine2){}
La méthode isEqualToString de la classe NSString :
if ([chaine1 isEqualToString:chaine2]){}
44
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
45
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
46
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.
48
49. Les dates et les heures
Jeudi 13 Février 2014
13/02/14
2014-02-13T06:00:00+01:00
49
50. Définition
Plusieurs classes sont associées à la manipulation des
objets
date
et
heure
dans
Objective-C
:
NSDate, NSCalendar, NSTimeZone, NSDateComponents
, NSDateFormatter.
50
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
51
52. La date courante (2/3)
[miseEnForme setDateStyle:NSDateFormatterMediumStyle];
setDateStyle :: format d'affichage de la date
52
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]);
53
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];
54
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
59
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]);
60