Immersion à iOS - Soat

Preview:

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/spo2KUHBHlM

Citation preview

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