102
O que você precisa para começar no iOS e Objective-C

O que você precisa para iniciar no iOS e Objective-C -

Embed Size (px)

DESCRIPTION

Slides da apresentação na Mobile Conf Rio 2013.

Citation preview

Page 1: O que você precisa para iniciar no iOS e Objective-C -

O que você precisa para começar no iOS e

Objective-C

Page 2: O que você precisa para iniciar no iOS e Objective-C -

@fabiopimentel

* Desenvolvedor Java, Ruby, Android e iOS* Instrutor Java, Ruby, Android e iOS* github.com/fabiopimentel

Quem sou eu?

Page 3: O que você precisa para iniciar no iOS e Objective-C -

Por que uma palestra para iniciante?

* Objective-C?* Difícil de começar? Novidade(2007)!

* Alta procura por desenvolvedores mobile no Brasil

Page 4: O que você precisa para iniciar no iOS e Objective-C -

Porque desenvolver para iOS?

Page 5: O que você precisa para iniciar no iOS e Objective-C -

“At Apple’s Worldwide Developer’s Conference in San Francisco today, Apple CEO Tim Cook revealed that since 2008, Apple has paid out developers $10 billion for their apps.”WWDC Jun/2013

Page 8: O que você precisa para iniciar no iOS e Objective-C -

O que você precisa?

Lógica de programação

Conhecimentos de Orientação de Objetos

Saber pesquisar no Stack Overflow, Google

Page 9: O que você precisa para iniciar no iOS e Objective-C -

E agora?

XCode

Page 10: O que você precisa para iniciar no iOS e Objective-C -

Mas eu não tenho Mac!

Page 11: O que você precisa para iniciar no iOS e Objective-C -
Page 12: O que você precisa para iniciar no iOS e Objective-C -

Vamos programar?

Objective-C (OFICIAL)

Ruby - RubyMotion

C# - Xamarin

Page 13: O que você precisa para iniciar no iOS e Objective-C -

Objective-C

C (1972)

C++(1985)

ObjC(1986)

Smalltalk(1980)

Page 14: O que você precisa para iniciar no iOS e Objective-C -

Objective-C

C (1972)

C++(1985)

ObjC(1986)

Smalltalk(1980)

Page 15: O que você precisa para iniciar no iOS e Objective-C -

http://virtualschool.edu/cox/

Brad Cox

1986

Page 16: O que você precisa para iniciar no iOS e Objective-C -

História

76

Page 17: O que você precisa para iniciar no iOS e Objective-C -

História

76 85

Page 18: O que você precisa para iniciar no iOS e Objective-C -

Ainda em 85 ...

Page 19: O que você precisa para iniciar no iOS e Objective-C -

Next ComputerSistema Operacional NextStep

Page 20: O que você precisa para iniciar no iOS e Objective-C -

Next ComputerSistema Operacional NextStep

Unix Like (Unix BSD)Conceito de Dock

Page 21: O que você precisa para iniciar no iOS e Objective-C -

Next ComputerSistema Operacional NextStep

Unix Like (Unix BSD)Origem do Dock

Conceitos de GUI

Page 22: O que você precisa para iniciar no iOS e Objective-C -

Next ComputerSistema Operacional NextStep

Unix Like (Unix BSD)Origem do Dock

Conceitos de GUIPrimeiro navegador web

Page 23: O que você precisa para iniciar no iOS e Objective-C -

Next ComputerSistema Operacional NextStep

Unix Like (Unix BSD)Origem do Dock

Conceitos de GUIPrimeiro navegador web

Objective-C como linguagem

Page 24: O que você precisa para iniciar no iOS e Objective-C -

História

76 85 86

Page 25: O que você precisa para iniciar no iOS e Objective-C -

História

76 85 86 96

Page 26: O que você precisa para iniciar no iOS e Objective-C -
Page 27: O que você precisa para iniciar no iOS e Objective-C -

e junto comigo ....

Project Builder

Page 28: O que você precisa para iniciar no iOS e Objective-C -

Project Builder XCode

Page 29: O que você precisa para iniciar no iOS e Objective-C -

Interface Builder

e junto comigo ....

XCode

Page 30: O que você precisa para iniciar no iOS e Objective-C -

Show me the code!!!

Page 31: O que você precisa para iniciar no iOS e Objective-C -
Page 32: O que você precisa para iniciar no iOS e Objective-C -
Page 33: O que você precisa para iniciar no iOS e Objective-C -
Page 34: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

Page 35: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

Header File (.h) -> Declaração

Implementation File (.m) -> Implementação

Page 36: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import <Foundation/Foundation.h>@interface Carro

@end

Carro.h

Page 37: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import <Foundation/Foundation.h>@interface Carro : NSObject

@end

Carro.h supertipo

Page 38: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import <Foundation/Foundation.h>@interface Carro : NSObject{

NSString * modelo;int ano;

}

@end

Carro.h

atributos

Page 39: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import <Foundation/Foundation.h>@interface Carro : NSObject{

NSString * modelo;int ano;

}

@end

Carro.h

atributos

@private(default)@protected@public

Page 40: O que você precisa para iniciar no iOS e Objective-C -
Page 41: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Page 42: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

Page 43: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void)

retorno

Page 44: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void) acelera;

nome

Page 45: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void) acelera;

- (void) pintaCarro :

recebe parâmetro

Page 46: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void) acelera;

- (void) pintaCarro : (Carro *)

tipo do parâmetro

Page 47: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void) acelera;

- (void) pintaCarro : (Carro *) carro;

nome do parâmetro

Page 48: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void) acelera;

- (void) pintaCarro : (Carro *) carro;

- (void) pintaCarro : (Carro *) carro comCor :

ainda nome do método

Page 49: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void) acelera;

- (void) pintaCarro : (Carro *) carro;

- (void) pintaCarro : (Carro *) carro comCor : (NSString *);

tipo do parâmetro

Page 50: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void) acelera;

- (void) pintaCarro : (Carro *) carro;

- (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;

nome do parâmetro

Page 51: O que você precisa para iniciar no iOS e Objective-C -

Declaração de métodos

Método de instância -> -Método de classe -> +

- (void) acelera;

- (void) pintaCarro : (Carro *) carro;

- (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;

Page 52: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import <Foundation/Foundation.h>@interface Carro : NSObject{

NSString * modelo;int ano;

}

-(void) setModelo : (NSString *) modelo;-(NSString *) modelo;

-(void) setAno : (int) ano;-(int) ano;

@end

Carro.h

Page 53: O que você precisa para iniciar no iOS e Objective-C -

Mas o que os métodos fazem?

Page 54: O que você precisa para iniciar no iOS e Objective-C -

São dois arquivos, lembra?

Header File (.h) -> Declaração

Implementation File (.m) -> Implementação

Page 55: O que você precisa para iniciar no iOS e Objective-C -

São dois arquivos lembra?

Header File (.h) -> Declaração OK

Implementation File (.m) -> Implementação

Page 56: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import “Carro.h”@implementation Carro

-(void) setModelo: (NSString *) modelo{

self.modelo = modelo;}

@end

Carro.m

Page 57: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import “Carro.h”@implementation Carro

-(void) setModelo: (NSString *) modelo{

self.modelo = modelo;}-(NSString *) modelo{

return modelo;}

@end

Carro.m

Page 58: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes#import “Carro.h”@implementation Carro

-(void) setModelo: (NSString *) modelo{

self.modelo = modelo;}-(NSString *) modelo{

return modelo;}-(void) setAno: (int) ano{

self.ano = ano;}-(int) ano{

return ano;}

@end

Carro.m

Page 59: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

Mas tem um CTRL +3

Generate Getters and Setters ?

#import “Carro.h”@implementation Carro

-(void) setModelo: (NSString *) modelo{

self.modelo = modelo;}-(NSString *) modelo{

return modelo;}-(void) setAno: (int) ano{

self.ano = ano;}-(int) ano{

return ano;}

@end

Carro.m

Page 60: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes#import “Carro.h”@implementation Carro

-(void) setModelo: (NSString *) modelo{

self.modelo = modelo;}-(NSString *) modelo{

return modelo;}-(void) setAno: (int) ano{

self.ano = ano;}-(int) ano{

return ano;}

@end

Carro.m

Quase isso!!!

Page 61: O que você precisa para iniciar no iOS e Objective-C -

Vamos voltar ....

Page 62: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import <Foundation/Foundation.h>@interface Carro : NSObject{

NSString * modelo;int ano;

}

-(void) setModelo : (NSString *) modelo;-(NSString *) modelo;

-(void) setAno : (int) ano;-(int) ano;

@end

Carro.h#import “Carro.h”@implementation Carro

-(void) setModelo: (NSString *) modelo{

self.modelo = modelo;}-(NSString *) modelo{

return modelo;}-(void) setAno: (int) ano{

self.ano = ano;}-(int) ano{

return ano;}@end

Carro.m

Page 63: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classesCarro.h

#import “Carro.h”@implementation Carro

-(void) setModelo: (NSString *) modelo{

self.modelo = modelo;}-(NSString *) modelo{

return modelo;}-(void) setAno: (int) ano{

self.ano = ano;}-(int) ano{

return ano;}@end

Carro.m

#import <Foundation/Foundation.h>@interface Carro : NSObject

@property NSString * modelo;@property int ano;

@end

Page 64: O que você precisa para iniciar no iOS e Objective-C -

Mais sobre propriedades...

@property ( nonatomic, strong ) NSString * modelo;

atomic weak

assing

xxx

Page 65: O que você precisa para iniciar no iOS e Objective-C -

Mais sobre propriedades...

@property ( nonatomic, strong ) NSString * modelo;

atomic weak

assing

xxx

Acesso concorrente(Threads)

Page 66: O que você precisa para iniciar no iOS e Objective-C -

Mais sobre propriedades...

@property ( nonatomic, strong ) NSString * modelo;

atomic weak

assign

xxx

Gerenciamento de memória

Page 67: O que você precisa para iniciar no iOS e Objective-C -

Mais sobre propriedades...

@property ( nonatomic, strong ) NSString * modelo;

atomic weak

assign

xxx

Gerenciamento de memória

Page 68: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classesCarro.h

#import “Carro.h”@implementation Carro

-(void) setModelo: (NSString *) modelo{

self.modelo = modelo;}-(NSString *) modelo{

return modelo;}-(void) setAno: (int) ano{

self.ano = ano;}-(int) ano{

return ano;}@end

Carro.m

#import <Foundation/Foundation.h>@interface Carro : NSObject

@property NSString * modelo;@property int ano;

@end

Page 69: O que você precisa para iniciar no iOS e Objective-C -

Declaração de classes

#import <Foundation/Foundation.h>@interface Carro : NSObject

@property NSString * modelo;@property int ano;

@end

Carro.h

#import “Carro.h”@implementation Carro

@synthesize modelo, ano;@end

Carro.m

Page 70: O que você precisa para iniciar no iOS e Objective-C -

Criando objetos

Carro alloc

Método de classe (+)

Page 71: O que você precisa para iniciar no iOS e Objective-C -

Criando objetos

[Carro alloc]

Chamada de método entre

colchetes

Page 72: O que você precisa para iniciar no iOS e Objective-C -

Criando objetos

[Carro alloc] init

Método de instância (-)

Page 73: O que você precisa para iniciar no iOS e Objective-C -

Criando objetos

[[Carro alloc] init]

Chamada de método entre

colchetes

Page 74: O que você precisa para iniciar no iOS e Objective-C -

Criando objetos

Carro * carro = [[Carro alloc] init];

Referência

Page 75: O que você precisa para iniciar no iOS e Objective-C -

Usando objetosCarro * carro = [[Carro alloc] init];

[carro setModelo: @”Fusca”];

Chamada de método! []

Page 76: O que você precisa para iniciar no iOS e Objective-C -

Usando objetosCarro * carro = [[Carro alloc] init];

[carro setModelo: @”Fusca”];NSString * modelo = [carro modelo];

método get

Page 77: O que você precisa para iniciar no iOS e Objective-C -

MUITA ATENÇÃO!!!!!!!

Page 78: O que você precisa para iniciar no iOS e Objective-C -

MUITA ATENÇÃO!!!!!!!

Existe Dot

Notation

Page 79: O que você precisa para iniciar no iOS e Objective-C -

MUITA ATENÇÃO!!!!!!!

Apenas para

propriedad

es!!!

Page 80: O que você precisa para iniciar no iOS e Objective-C -

Usando objetosCarro * carro = [[Carro alloc] init];

carro.modelo = @“Fusca”;

é um Syntax Sugar para[carro setModelo: @”Fusca”];

Page 81: O que você precisa para iniciar no iOS e Objective-C -

Usando objetosCarro * carro = [[Carro alloc] init];

carro.modelo = @“Fusca”;

é um Syntax Sugar para[carro modelo];

NSString * modelo = carro.modelo;

Page 82: O que você precisa para iniciar no iOS e Objective-C -

....

- (void) acelera;

...

Carro.h

Page 83: O que você precisa para iniciar no iOS e Objective-C -

Usando objetosCarro * carro = [[Carro alloc] init];

carro.modelo = @“Fusca”;NSString * modelo = carro.modelo;

carro.acelera

Page 84: O que você precisa para iniciar no iOS e Objective-C -

Usando objetosCarro * carro = [[Carro alloc] init];

carro.modelo = @“Fusca”;NSString * modelo = carro.modelo;

carro.acelera

Page 85: O que você precisa para iniciar no iOS e Objective-C -

Usando objetosCarro * carro = [[Carro alloc] init];

carro.modelo = @“Fusca”;NSString * modelo = carro.modelo;

[carro acelera];

Page 86: O que você precisa para iniciar no iOS e Objective-C -

Usando objetosCarro * carro = [[Carro alloc] init];

carro.modelo = @“Fusca”;NSString * modelo = carro.modelo;

[carro acelera];

Page 87: O que você precisa para iniciar no iOS e Objective-C -

....

- (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;

...

Oficina.h

Page 88: O que você precisa para iniciar no iOS e Objective-C -
Page 89: O que você precisa para iniciar no iOS e Objective-C -

Usando objetos

Carro * carro = [[Carro alloc] init];[carro setModelo: @”Fusca”];[carro setAno: 1969];

Oficina * oficina =[[Oficina alloc]init][oficina pintaCarro: carro comCor: @”Azul”]

- (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;

Oficina.h

Page 90: O que você precisa para iniciar no iOS e Objective-C -

Usando objetos

Carro * carro = [[Carro alloc] init];[carro setModelo: @”Fusca”];[carro setAno: 1969];

Oficina * oficina =[[Oficina alloc]init][oficina pintaCarro: carro comCor: @”Azul”]

- (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;

Oficina.h

O nome do método é:pintaCarro:comCor:

Page 91: O que você precisa para iniciar no iOS e Objective-C -

iOS

//desde 2007 uma versão por ano

for(int ano = 2007, versao =1; ano < 2013; ano ++, versao ++){ NSLog(@”No ano %d foi lançado a versão %d”, ano, versao);}

C

ObjC

Page 92: O que você precisa para iniciar no iOS e Objective-C -

iOS

NSArray * devices = [NSArray arrayWithObjects: @”iPhone”, @”iPad”, @”iPod Touch”, @”Apple TV”, nil ];

int quantidade = [devices count ];NSLog(@”%d”, quantidade);       

//devices que rodam sobre o iOSclasse

método de classe

[]

método de instância

[ ]

Page 93: O que você precisa para iniciar no iOS e Objective-C -

iOS MVC

Controller

Model View

Page 94: O que você precisa para iniciar no iOS e Objective-C -

iOS MVC

Controller

Model View

------

------

-----

------

-----

Page 95: O que você precisa para iniciar no iOS e Objective-C -

iOS MVC

Controller

Model View

------

------

-----

------

-----

Page 96: O que você precisa para iniciar no iOS e Objective-C -

iOS MVC

Controller

Model View

------

------

-----

------

-----

Outlet

Page 97: O que você precisa para iniciar no iOS e Objective-C -

iOS MVC

Controller

Model View

------

------

-----

------

-----

Outlet

Action

Page 98: O que você precisa para iniciar no iOS e Objective-C -

LIVE CODE!!!

Page 99: O que você precisa para iniciar no iOS e Objective-C -

E agora?

Page 102: O que você precisa para iniciar no iOS e Objective-C -

Obrigado!@fabiopimentel