iOS Immersion
1
Pascal Batty
mardi 11 décembre 12
Je veux !
2
mardi 11 décembre 12
๏ Idée de génie
๏Maquettes révolutionnaires
๏API de fou
๏App Mobile
3
mardi 11 décembre 12
4
Mobile ?mardi 11 décembre 12
5
4.x5,7 %
5.x24,8 %
6.x69,5 %
Version ?mardi 11 décembre 12
6
Moyen ?mardi 11 décembre 12
7
mardi 11 décembre 12
Objective-C : Historique
8
mardi 11 décembre 12
9
Naissance d'Objective-C
1980
mardi 11 décembre 12
NeXTstep
1986
mardi 11 décembre 12
11
MacOS X
2001
mardi 11 décembre 12
12
iphone
2007
mardi 11 décembre 12
13
iPhone OS SDK
2008
mardi 11 décembre 12
iOS 3 iOS 4 iOS 5 iOS 6 …
2009 2010 2011 2012
Xcode 3.2 Xcode 4.0
mardi 11 décembre 12
Objective-C : Technique
15
mardi 11 décembre 12
16
FrameworkRuntime
Compilo Langage
ObjC
mardi 11 décembre 12
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
18
Pointeurs
mardi 11 décembre 12
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
20
NSObject
mardi 11 décembre 12
21
nil
mardi 11 décembre 12
Boîte à outils
22
• NSString
• NSArray
• NSDictionary
• NSSet
mardi 11 décembre 12
Boîte à outils
22
• NSString
• NSArray
• NSDictionary
• NSSet
• NSMutableString
• NSMutableArray
• NSMutableDictionary
• NSMutableSet
mardi 11 décembre 12
Syntaxe
23
mardi 11 décembre 12
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
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
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
Envoi de message
27
ObjC
Java/C#
[teller say:message to:person];
teller.say(message, person);
mardi 11 décembre 12
Sélecteur
28
say:to:
mardi 11 décembre 12
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
Gestion de la mémoire
30
mardi 11 décembre 12
mardi 11 décembre 12
Reference Counting
32
mardi 11 décembre 12
Setter (retain)
33
- (void)setText:(NSString *)textValue {
if (textValue != _text) {
[textValue retain];
[_text release];
_text = textValue;
}
}
mardi 11 décembre 12
Ouf…
34
Automatic Reference Counting
mardi 11 décembre 12
Anatomie d’une App
35
mardi 11 décembre 12
Révisions
36
ModelView
Controller
mardi 11 décembre 12
Interface Utilisateur
37
ViewController Interface
Outlets
Actions
mardi 11 décembre 12
38
View≠
ViewController
mardi 11 décembre 12
Délégation
39
UITextField
@protocol UITextFieldDelegate• textFieldShouldBeginEditing:
• textFieldDidBeginEditing:
• textFieldShouldEndEditing:
• textFieldDidEndEditing:
• textField:shouldChangeCharactersInRange:replacementString:
• textFieldShouldClear:
• textFieldShouldReturn:
mardi 11 décembre 12
Délégation
40
delegateUITextField
mardi 11 décembre 12
Délégation
40
delegate
L’utilisateur a appuyé sur Retour !
UITextField
[delegate textFieldShouldReturn:self]
mardi 11 décembre 12
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
Là où tout commence…
41
AppDelegate
mardi 11 décembre 12
42
Pause !puis demo
mardi 11 décembre 12
Pour commencer
43
http://developer.apple.com/ios
mardi 11 décembre 12
44
Merci
mardi 11 décembre 12
Recommended