Download - Immersion à iOS - Soat

Transcript
Page 1: Immersion à iOS - Soat

iOS Immersion

1

Pascal Batty

mardi 11 décembre 12

Page 2: Immersion à iOS - Soat

Je veux !

2

mardi 11 décembre 12

Page 3: Immersion à iOS - Soat

๏ Idée de génie

๏Maquettes révolutionnaires

๏API de fou

๏App Mobile

3

mardi 11 décembre 12

Page 4: Immersion à iOS - Soat

4

Mobile ?mardi 11 décembre 12

Page 5: Immersion à iOS - Soat

5

4.x5,7 %

5.x24,8 %

6.x69,5 %

Version ?mardi 11 décembre 12

Page 6: Immersion à iOS - Soat

6

Moyen ?mardi 11 décembre 12

Page 7: Immersion à iOS - Soat

7

mardi 11 décembre 12

Page 8: Immersion à iOS - Soat

Objective-C : Historique

8

mardi 11 décembre 12

Page 9: Immersion à iOS - Soat

9

Naissance d'Objective-C

1980

mardi 11 décembre 12

Page 10: Immersion à iOS - Soat

NeXTstep

1986

mardi 11 décembre 12

Page 11: Immersion à iOS - Soat

11

MacOS X

2001

mardi 11 décembre 12

Page 12: Immersion à iOS - Soat

12

iphone

2007

mardi 11 décembre 12

Page 13: Immersion à iOS - Soat

13

iPhone OS SDK

2008

mardi 11 décembre 12

Page 14: Immersion à iOS - Soat

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

Objective-C : Technique

15

mardi 11 décembre 12

Page 16: Immersion à iOS - Soat

16

FrameworkRuntime

Compilo Langage

ObjC

mardi 11 décembre 12

Page 17: Immersion à iOS - Soat

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

18

Pointeurs

mardi 11 décembre 12

Page 19: Immersion à iOS - Soat

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

20

NSObject

mardi 11 décembre 12

Page 21: Immersion à iOS - Soat

21

nil

mardi 11 décembre 12

Page 22: Immersion à iOS - Soat

Boîte à outils

22

• NSString

• NSArray

• NSDictionary

• NSSet

mardi 11 décembre 12

Page 23: Immersion à iOS - Soat

Boîte à outils

22

• NSString

• NSArray

• NSDictionary

• NSSet

• NSMutableString

• NSMutableArray

• NSMutableDictionary

• NSMutableSet

mardi 11 décembre 12

Page 24: Immersion à iOS - Soat

Syntaxe

23

mardi 11 décembre 12

Page 25: Immersion à iOS - Soat

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

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

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

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

Sélecteur

28

say:to:

mardi 11 décembre 12

Page 30: Immersion à iOS - Soat

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

Gestion de la mémoire

30

mardi 11 décembre 12

Page 32: Immersion à iOS - Soat

mardi 11 décembre 12

Page 33: Immersion à iOS - Soat

Reference Counting

32

mardi 11 décembre 12

Page 34: Immersion à iOS - Soat

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

Ouf…

34

Automatic Reference Counting

mardi 11 décembre 12

Page 36: Immersion à iOS - Soat

Anatomie d’une App

35

mardi 11 décembre 12

Page 37: Immersion à iOS - Soat

Révisions

36

ModelView

Controller

mardi 11 décembre 12

Page 38: Immersion à iOS - Soat

Interface Utilisateur

37

ViewController Interface

Outlets

Actions

mardi 11 décembre 12

Page 39: Immersion à iOS - Soat

38

View≠

ViewController

mardi 11 décembre 12

Page 40: Immersion à iOS - Soat

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

Délégation

40

delegateUITextField

mardi 11 décembre 12

Page 42: Immersion à iOS - Soat

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

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

Là où tout commence…

41

AppDelegate

mardi 11 décembre 12

Page 45: Immersion à iOS - Soat

42

Pause !puis demo

mardi 11 décembre 12

Page 46: Immersion à iOS - Soat

Pour commencer

43

http://developer.apple.com/ios

mardi 11 décembre 12

Page 47: Immersion à iOS - Soat

44

Merci

mardi 11 décembre 12