cocoaheads rennes #3 : bien débuter sur ios

23
Bien débuter sur Jérémy Brault CocoaHeads Rennes 8 septembre 2011

Upload: cocoaheadsrns

Post on 22-May-2015

903 views

Category:

Technology


1 download

DESCRIPTION

Slides de la présentation "Bien débuter sur iOS" de la session des CocoaHeads Rennais du 08 septembre 2011. Présentation assurée par Jérémy Brault, ingénieur chez Niji.

TRANSCRIPT

Page 1: CocoaHeads Rennes #3 : Bien débuter sur iOS

Bien débuter sur

Jérémy Brault

CocoaHeads Rennes8 septembre 2011

Page 2: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : descriptif

• Surcouche C

• Orienté objet

• Inspiré de SmallTalk

• Typage dynamique, héritage simple

Page 3: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : classe@interface Employee : Person {

float salary_;

float bonus_;

Boss *boss_;

}

- (float)monthlyPay;

+ (uint)numberOfEmployees;

@end

Page 4: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : classe@implementation Employee

- (float)monthlyPay {

return (salary_ + bonus_) / 12;

}

+ (uint)numberOfEmployees {

return nbInstances;

}

@end

Page 5: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : protocole@protocol SubscriptionListener <Listener>

@required

- (void)didSubscribe;

@optional

- (void)didUnsubscribe;

@end

Page 6: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : protocole@interface Employee : Person <SubscriptionListener> {

}

@end

@implementation Employee

- (void)didSubscribe {

...

}

@end

Page 7: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : messagerq1-> comparaison Java (importance des étiquettes)

Color* color = Color.createColor(0.2, 0.4, 0.7, 0.6);

Color* color = [Color createColorRed:0.2 green:0.4 blue:0.7 alpha:0.6];+ (Color*)createColorRed:(float)red green:(float)green blue:(float)blue alpha:(float)alpha;

[[Color redColor] colorByAddingBlue:0.2];

+ (Color*)redColor;

- (Color*)colorByAddingBlue:(float)blueValue;

Color* myColor = [Color redColor];

myColor = [myColor colorByAddingBlue:0.2];

Page 8: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : instance

• Appel sur la classe courante : self

• Appel sur la super-classe : super

Page 9: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : création d’objet

• Allocation mémoire : alloc

• Initialisation : init

Person *john = [[Person alloc] init];

Page 10: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : initialiseur

- (id)initWithIndex:(int)index {

self = [super init];

if (self) {

index_ = index;

}

return self;

}

Page 11: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C :gestion mémoire

• Compteur de références : retainCount

employee

boss1 boss2

2

• 0 : dealloc

• release, autorelease : -1• alloc, copy, retain : +1

Page 12: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C :gestion mémoire

“ You are responsible for the objects you own ”

alloc/copy/retain release/autorelease

Page 13: CocoaHeads Rennes #3 : Bien débuter sur iOS

Gestion mémoire : variable locale

- (void)doSomeWork {

Job *boringJob = [[Job alloc] init];

...

[boringJob release];

}

- (void)drinkHotBeverage {

Cofee *cofee = [[[Cofee alloc] init] autorelease];

...

}

Page 14: CocoaHeads Rennes #3 : Bien débuter sur iOS

Gestion mémoire : variable d’instance

- (id)initWithBoss:(Boss*)boss {

self = [super init];

if (self) {

boss_ = [boss retain];

}

return self;

}

- (void)dealloc {

[boss_ release];

[super dealloc];

}

Page 15: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : getter & setter

@interface Employee : Person {

float salary_;

Boss *boss_;

}

@property (assign) float salary;

@property (retain) Boss *boss;

@end

Page 16: CocoaHeads Rennes #3 : Bien débuter sur iOS

Objective-C : getter & setter

@implementation Employee

@synthesize salary = salary_;

@synthesize boss = boss_;

@end

Page 17: CocoaHeads Rennes #3 : Bien débuter sur iOS

Développer sur iOS : API

• CocoaTouch

• Descendant de Cocoa

• Design MVC

• Foundation Kit

• UIKit

• CoreData

Page 18: CocoaHeads Rennes #3 : Bien débuter sur iOS

Développer sur iOS : outils

• XCode

• InterfaceBuilder

• GCC/GCD, LLVM/LLDB

• Instruments

Page 19: CocoaHeads Rennes #3 : Bien débuter sur iOS

CocoaTouch par l’exemple (1) : vue

• UIView

• Dessin

• Hiérarchie

• Interaction

• Customisation

• Sous-classes : UILabel, UIButton, etc.

Page 20: CocoaHeads Rennes #3 : Bien débuter sur iOS

DEMO

Page 21: CocoaHeads Rennes #3 : Bien débuter sur iOS

CocoaTouch par l’exemple (2) : contrôleur• UIViewController

• Gestion d’une hiérarchie de vues

• Médiation entre données et vues

• Logique de navigation

• Sous-classes : UINavigationController, UITableViewController, etc.

Page 22: CocoaHeads Rennes #3 : Bien débuter sur iOS

DEMO

Page 23: CocoaHeads Rennes #3 : Bien débuter sur iOS

Must know-Must read• Documentation & Forum Apple

• Forum PommeDev

• StackOverflow

• CocoaHeads

• “ Beginning iPhone Development : exploring the iPhone SDK ”, APress

[email protected]