immersion à ios - soat
DESCRIPTION
Le monde du développement sur iPhone et iPad est aussi séduisant qu'il est impressionnant. Un nouveau langage à apprendre, des tonnes d'API et une grammaire tactile à découvrir, on peut assez vite se noyer. Pascal Batty, consultant Soat, vous propose de revenir sur l'histoire de ce SDK et d'en démystifier les bases, puis de mettre les mains dans le cambouis pour créer votre première application. Que vous veniez du Java ou du .net, vous pourrez découvrir que si l'eau paraît froide au début, elle est très bonne quand on est dedans. La vidéo de la présentation est visible ici : http://youtu.be/spo2KUHBHlMTRANSCRIPT
![Page 1: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/1.jpg)
iOS Immersion
1
Pascal Batty
mardi 11 décembre 12
![Page 2: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/2.jpg)
Je veux !
2
mardi 11 décembre 12
![Page 3: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/3.jpg)
๏ Idée de génie
๏Maquettes révolutionnaires
๏API de fou
๏App Mobile
3
mardi 11 décembre 12
![Page 4: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/4.jpg)
4
Mobile ?mardi 11 décembre 12
![Page 5: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/5.jpg)
5
4.x5,7 %
5.x24,8 %
6.x69,5 %
Version ?mardi 11 décembre 12
![Page 6: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/6.jpg)
6
Moyen ?mardi 11 décembre 12
![Page 7: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/7.jpg)
7
mardi 11 décembre 12
![Page 8: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/8.jpg)
Objective-C : Historique
8
mardi 11 décembre 12
![Page 9: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/9.jpg)
9
Naissance d'Objective-C
1980
mardi 11 décembre 12
![Page 10: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/10.jpg)
NeXTstep
1986
mardi 11 décembre 12
![Page 11: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/11.jpg)
11
MacOS X
2001
mardi 11 décembre 12
![Page 12: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/12.jpg)
12
iphone
2007
mardi 11 décembre 12
![Page 13: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/13.jpg)
13
iPhone OS SDK
2008
mardi 11 décembre 12
![Page 14: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/14.jpg)
iOS 3 iOS 4 iOS 5 iOS 6 …
2009 2010 2011 2012
Xcode 3.2 Xcode 4.0
mardi 11 décembre 12
![Page 15: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/15.jpg)
Objective-C : Technique
15
mardi 11 décembre 12
![Page 16: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/16.jpg)
16
FrameworkRuntime
Compilo Langage
ObjC
mardi 11 décembre 12
![Page 17: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/17.jpg)
17
struct
Pointeurs
malloc()
int[]
char*
int main(int argc, char** argv)Références
Headersuint
typedef
enumtry-catch
#ifdef
#define
Allocation
Désallocation
mardi 11 décembre 12
![Page 18: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/18.jpg)
18
Pointeurs
mardi 11 décembre 12
![Page 19: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/19.jpg)
19
@class
Héritage
Protocoles
@protocol
NSString
Méthode d’instance
Méthode de classe
NSObject
Propriétés
@property
Polymorphisme
RetainRelease
nil
mardi 11 décembre 12
![Page 20: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/20.jpg)
20
NSObject
mardi 11 décembre 12
![Page 21: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/21.jpg)
21
nil
mardi 11 décembre 12
![Page 22: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/22.jpg)
Boîte à outils
22
• NSString
• NSArray
• NSDictionary
• NSSet
mardi 11 décembre 12
![Page 23: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/23.jpg)
Boîte à outils
22
• NSString
• NSArray
• NSDictionary
• NSSet
• NSMutableString
• NSMutableArray
• NSMutableDictionary
• NSMutableSet
mardi 11 décembre 12
![Page 24: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/24.jpg)
Syntaxe
23
mardi 11 décembre 12
![Page 25: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/25.jpg)
Déclaration
24
#import <Foundation/Foundation.h>
@interface Person:NSObject
@property NSString *name;
- (id)initWithName:(NSString *)name;
+ (id)personWithName:(NSString *)name;
@end
mardi 11 décembre 12
![Page 26: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/26.jpg)
Implémentation
25
#import "Person.h"
@implementation Person@synthesize name = _name;
- (id)initWithName:(NSString *)name {…}
+ (id)personWithName:(NSString *)name {…}@end
mardi 11 décembre 12
![Page 27: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/27.jpg)
Envoi de message
26
[teller sayHello];
teller.sayHello();
[teller sayHelloTo:person];
teller.sayHello(person);
ObjC
Java/C#
ObjC
Java/C#
mardi 11 décembre 12
![Page 28: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/28.jpg)
Envoi de message
27
ObjC
Java/C#
[teller say:message to:person];
teller.say(message, person);
mardi 11 décembre 12
![Page 29: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/29.jpg)
Sélecteur
28
say:to:
mardi 11 décembre 12
![Page 30: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/30.jpg)
Initialisation, Propriétés
29
Person *person1 = [[Person alloc] init];
Person *person2 = [[Person alloc] initWithName:@"Noé"];
Person *person3 = [Person personWithName:@"Jim"];
[person1 setName:@"Jen"];
person2.name = @"Pam"];
NSString *name = [person1 name];
NSString *otherName = person2.name;
Setter
Getter
mardi 11 décembre 12
![Page 31: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/31.jpg)
Gestion de la mémoire
30
mardi 11 décembre 12
![Page 32: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/32.jpg)
mardi 11 décembre 12
![Page 33: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/33.jpg)
Reference Counting
32
mardi 11 décembre 12
![Page 34: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/34.jpg)
Setter (retain)
33
- (void)setText:(NSString *)textValue {
if (textValue != _text) {
[textValue retain];
[_text release];
_text = textValue;
}
}
mardi 11 décembre 12
![Page 35: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/35.jpg)
Ouf…
34
Automatic Reference Counting
mardi 11 décembre 12
![Page 36: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/36.jpg)
Anatomie d’une App
35
mardi 11 décembre 12
![Page 37: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/37.jpg)
Révisions
36
ModelView
Controller
mardi 11 décembre 12
![Page 38: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/38.jpg)
Interface Utilisateur
37
ViewController Interface
Outlets
Actions
mardi 11 décembre 12
![Page 39: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/39.jpg)
38
View≠
ViewController
mardi 11 décembre 12
![Page 40: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/40.jpg)
Délégation
39
UITextField
@protocol UITextFieldDelegate• textFieldShouldBeginEditing:
• textFieldDidBeginEditing:
• textFieldShouldEndEditing:
• textFieldDidEndEditing:
• textField:shouldChangeCharactersInRange:replacementString:
• textFieldShouldClear:
• textFieldShouldReturn:
mardi 11 décembre 12
![Page 41: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/41.jpg)
Délégation
40
delegateUITextField
mardi 11 décembre 12
![Page 42: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/42.jpg)
Délégation
40
delegate
L’utilisateur a appuyé sur Retour !
UITextField
[delegate textFieldShouldReturn:self]
mardi 11 décembre 12
![Page 43: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/43.jpg)
Délégation
40
delegate
L’utilisateur a appuyé sur Retour !
UITextField
Ok, je lance une recherche
[delegate textFieldShouldReturn:self]
mardi 11 décembre 12
![Page 44: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/44.jpg)
Là où tout commence…
41
AppDelegate
mardi 11 décembre 12
![Page 45: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/45.jpg)
42
Pause !puis demo
mardi 11 décembre 12
![Page 46: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/46.jpg)
Pour commencer
43
http://developer.apple.com/ios
mardi 11 décembre 12
![Page 47: Immersion à iOS - Soat](https://reader030.vdocuments.net/reader030/viewer/2022020718/55625d89d8b42aed7d8b47a6/html5/thumbnails/47.jpg)
44
Merci
mardi 11 décembre 12