iOS immersion

50
iOS Immersion Pascal Batty vendredi 3 mai 13

description

Une présentation d'une heure sur les points techniques à connaître pour attaquer le développement sur iOS (iPhone, iPad, iPod Touch).

Transcript of iOS immersion

Page 1: iOS immersion

iOS ImmersionPascal Batty

vendredi 3 mai 13

Page 2: iOS immersion

Je Veux !

vendredi 3 mai 13

Page 3: iOS immersion

•Idée de génie

•Maquettes révolutionnaires

•API de fou

•App Mobile

vendredi 3 mai 13

Page 4: iOS immersion

Mobile ?vendredi 3 mai 13

Page 5: iOS immersion

Version ?

4.x5,7 %

5.x24,8 %

6.x69,5 %

Source : David Smith, 7 novembre 2012

vendredi 3 mai 13

Page 6: iOS immersion

Moyen ?vendredi 3 mai 13

Page 7: iOS immersion

vendredi 3 mai 13

Page 8: iOS immersion

Objective-CHistorique

vendredi 3 mai 13

Page 9: iOS immersion

Naissance d'Objective-C

1980

vendredi 3 mai 13

Page 10: iOS immersion

NeXTstep

1986

vendredi 3 mai 13

Page 11: iOS immersion

MacOS X

2001

vendredi 3 mai 13

Page 12: iOS immersion

iphone

2007

vendredi 3 mai 13

Page 13: iOS immersion

iPhone OS SDK

2008

vendredi 3 mai 13

Page 14: iOS immersion

iOS 3 iOS 4 iOS 5 iOS 6 …

2009 2010 2011 2012

Xcode 3.2 Xcode 4.0

vendredi 3 mai 13

Page 15: iOS immersion

Objective-CTechnique

vendredi 3 mai 13

Page 16: iOS immersion

FrameworkRuntime

Compilo Langage

ObjC

vendredi 3 mai 13

Page 17: iOS immersion

vendredi 3 mai 13

Page 18: iOS immersion

struct

Pointeurs

Prototypesmalloc()

int[]

char*

int main(int argc, char** argv)Références

Headersuint

typedef

enumtry-catch

#ifdef

#define

Allocation

Désallocation

vendredi 3 mai 13

Page 19: iOS immersion

vendredi 3 mai 13

Page 20: iOS immersion

Pointeurs

vendredi 3 mai 13

Page 21: iOS immersion

vendredi 3 mai 13

Page 22: iOS immersion

@class

Héritage

Protocoles

@protocol

NSString

Méthode d’instance

Méthode de classe

NSObject

Propriétés

@property

Polymorphisme

RetainRelease

nil

vendredi 3 mai 13

Page 23: iOS immersion

NSObject

vendredi 3 mai 13

Page 24: iOS immersion

nil

vendredi 3 mai 13

Page 25: iOS immersion

Boîte à outils

• NSString

• NSArray

• NSDictionary

• NSSet

vendredi 3 mai 13

Page 26: iOS immersion

Boîte à outils

• NSString

• NSArray

• NSDictionary

• NSSet

• NSMutableString

• NSMutableArray

• NSMutableDictionary

• NSMutableSet

vendredi 3 mai 13

Page 27: iOS immersion

Syntaxe

vendredi 3 mai 13

Page 28: iOS immersion

Déclaration

#import <Foundation/Foundation.h>

@interface Person:NSObject

@property NSString *name;

- (id)initWithName:(NSString *)name;

+ (id)personWithName:(NSString *)name;

@end

vendredi 3 mai 13

Page 29: iOS immersion

Implémentation#import "Person.h"

@implementation Person@synthesize name = _name;

- (id)initWithName:(NSString *)name {…}

+ (id)personWithName:(NSString *)name {…}@end

vendredi 3 mai 13

Page 30: iOS immersion

Envoi de message

[teller sayHello];

teller.sayHello();

[teller sayHelloTo:person];

teller.sayHello(person);

ObjC

Java/C#

ObjC

Java/C#

vendredi 3 mai 13

Page 31: iOS immersion

Envoi de message

ObjC

Java/C#

[teller say:message to:person];

teller.say(message, person);

vendredi 3 mai 13

Page 32: iOS immersion

Sélecteur

say:to:

vendredi 3 mai 13

Page 33: iOS immersion

Initialisation, Propriétés

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

vendredi 3 mai 13

Page 34: iOS immersion

Gestion de la mémoire

vendredi 3 mai 13

Page 35: iOS immersion

vendredi 3 mai 13

Page 36: iOS immersion

Reference Counting

vendredi 3 mai 13

Page 37: iOS immersion

Setter (retain)

- (void)setText:(NSString *)textValue {

if (textValue != _text) {

[textValue retain];

[_text release];

_text = textValue;

}

}

vendredi 3 mai 13

Page 38: iOS immersion

Ouf…

Automatic Reference Counting

vendredi 3 mai 13

Page 39: iOS immersion

Anatomie d'une App

vendredi 3 mai 13

Page 40: iOS immersion

Révisions

ModelView

Controller

vendredi 3 mai 13

Page 41: iOS immersion

UIKit

UIView

UILabelUIControl

UIButton Etc…

vendredi 3 mai 13

Page 42: iOS immersion

Interface Utilisateur

ViewController Interface

Outlets

Actions

vendredi 3 mai 13

Page 43: iOS immersion

View≠

ViewController

vendredi 3 mai 13

Page 44: iOS immersion

Delegation

UITextField

@protocol UITextFieldDelegate• textFieldShouldBeginEditing:

• textFieldDidBeginEditing:

• textFieldShouldEndEditing:

• textFieldDidEndEditing:

• textField:shouldChangeCharactersInRange:replacementString:

• textFieldShouldClear:

• textFieldShouldReturn:

vendredi 3 mai 13

Page 45: iOS immersion

Delegation

delegateUITextField

vendredi 3 mai 13

Page 46: iOS immersion

Delegation

delegate

L’utilisateur a appuyé sur Retour !

UITextField

[delegate textFieldShouldReturn:self]

vendredi 3 mai 13

Page 47: iOS immersion

Delegation

delegate

L’utilisateur a appuyé sur Retour !

UITextField

Ok, je lance une recherche

[delegate textFieldShouldReturn:self]

vendredi 3 mai 13

Page 48: iOS immersion

Là où tout commence

AppDelegate

vendredi 3 mai 13

Page 49: iOS immersion

Pour commencer

http://developer.apple.com/ios

vendredi 3 mai 13

Page 50: iOS immersion

Merci

vendredi 3 mai 13