Transcript
Page 1: Primeiros passos no iOS com Objective-C

iOS - Primeiros passosDesenvolvimento nativo com Objective-C

Page 2: Primeiros passos no iOS com Objective-C

Osni Oliveira

[email protected]@osnipso

Quem?

Page 3: Primeiros passos no iOS com Objective-C

iOS

iPhone / iPhone OS

iPad -> iOS

Veio do Mac OS X

iPhone, iPod touch, iPad, Apple TV

Page 4: Primeiros passos no iOS com Objective-C

Mac OS X

Veio do NeXTSTEP

Page 5: Primeiros passos no iOS com Objective-C

NeXTSTEPUnix-like

Mach kernel

BSD

API Orientada a Objetos

Objective-C

Page 6: Primeiros passos no iOS com Objective-C

No princípio, era...

Project Builder (código)

Interface Builder (interface)

Page 7: Primeiros passos no iOS com Objective-C

Crise de identidade

Project Builder virou Xcode

Page 8: Primeiros passos no iOS com Objective-C

Identidade

Interface Builder... ficou sendo Interface Builder, mesmo!

Integrado a partir do Xcode 4.x

Page 9: Primeiros passos no iOS com Objective-C

Objective-C

1983 (!)

Stepstone (?)

Smalltalk ... não é Simula!

NeXT - 1988

Page 10: Primeiros passos no iOS com Objective-C

Objective-C

Mensagem... não é método! (mas é quase)

É resolvido em tempo de execução, não em... blá, blá, blá

Page 11: Primeiros passos no iOS com Objective-C

Perguntas, perguntas...

Precisa ser em Objective-C?

Page 12: Primeiros passos no iOS com Objective-C

NÃO!

Page 13: Primeiros passos no iOS com Objective-C

Hã?

RubyMotion

Xamarin (C# / .NET)

Page 14: Primeiros passos no iOS com Objective-C

Por que Objective-C?

OFICIAL

Mais utilizado

BOM

... *cof* C *cof*

Page 15: Primeiros passos no iOS com Objective-C

Perguntas, perguntas...

Preciso de um Mac?

Page 16: Primeiros passos no iOS com Objective-C

SIM!

Page 17: Primeiros passos no iOS com Objective-C

Calma, explico...

Na verdade, precisa do Xcode...

Page 18: Primeiros passos no iOS com Objective-C

Calma, explico...

O Xcode só roda no Mac OS X...

Page 19: Primeiros passos no iOS com Objective-C

Calma, explico...

... e o Mac OS X só é licenciado para executar em hardware Apple

OU SEJA, MAC!

Page 20: Primeiros passos no iOS com Objective-C

Perguntas, perguntas...

MESMO?

Page 21: Primeiros passos no iOS com Objective-C

Pois é...

Virtual Machine

“Hackintosh”

Page 22: Primeiros passos no iOS com Objective-C

Está certo disso?

Page 23: Primeiros passos no iOS com Objective-C

Posso perguntar?

Page 24: Primeiros passos no iOS com Objective-C

Como sou esperto...

Difícil

Trabalhoso

Problemas

Page 25: Primeiros passos no iOS com Objective-C

Quer brincar, quer brincar?

Ah, então, tá bom!

Page 26: Primeiros passos no iOS com Objective-C

Pretende trabalhar?

Por que não comprar um Mac?

Page 27: Primeiros passos no iOS com Objective-C

Checklist...Macintosh

OS X Lion / OS X Mountain LionXcode & etc.

iOS SDK... shall we?

Page 28: Primeiros passos no iOS com Objective-C

Eba, código!

Page 29: Primeiros passos no iOS com Objective-C

iOS Simulator

Não é emulador

x86_64

Roda o iOS, né...

Page 30: Primeiros passos no iOS com Objective-C

Parabéns!

Exibiu tela em branco

Ainda tomou bronca!

Page 31: Primeiros passos no iOS com Objective-C

Como assim?

Vamos pensar... o que acontece quando executa?

Page 32: Primeiros passos no iOS com Objective-C

main()

Opa, como não?

Program loop? Nah... MUITO MAIS LEGAL

Page 33: Primeiros passos no iOS com Objective-C

“Sabonetou”...

main() é o chefe

O que o chefe sabe fazer?

Page 34: Primeiros passos no iOS com Objective-C

Quer que desenhe?

AppiOS

Delegatemensagens

1

2

3

Page 35: Primeiros passos no iOS com Objective-C

Delegate, putz!

É quem realmente faz as coisas

Em outras palavras, recebe as mensagens

Page 36: Primeiros passos no iOS com Objective-C

E o que fazer?

Mostra, mostra...

Page 37: Primeiros passos no iOS com Objective-C

View

Está na tela, é View

Sério. Mesmo.

Page 38: Primeiros passos no iOS com Objective-C

E jogos?

Também!

View especial

Page 39: Primeiros passos no iOS com Objective-C

Achievement

Achievement unlocked: View

Importante

Só, queridão?

Page 40: Primeiros passos no iOS com Objective-C

Então, cria!

Page 41: Primeiros passos no iOS com Objective-C

Sintaxe?

Opa, a sintaxe, claro...CMCViewController *viewController = [[CMCViewController alloc] init];

CMCViewController viewController = new CMCViewController();

Page 42: Primeiros passos no iOS com Objective-C

Propriedades

Uso de dotNotationself.window.rootViewController = viewController;

Preserva a sanidade! Duvida?

Page 43: Primeiros passos no iOS com Objective-C

Propriedades

Toma essa![[self window] setRootViewController:viewController];

Page 44: Primeiros passos no iOS com Objective-C

Propriedades

Mais fácil comparar:self.window.rootViewController = viewController;

[[self window] setRootViewController:viewController];

Page 45: Primeiros passos no iOS com Objective-C

Mensagens, em geral...

[alvo seletor];

[target selector];

Mais ou menos como:target.selector();

Page 46: Primeiros passos no iOS com Objective-C

Ah, nem é difícil...

Vamos combinar:Consegue ler? Use dotNotationErrou? Treine!

Page 47: Primeiros passos no iOS com Objective-C

Que mais?

Começando a ficar interessante...

Editar View?

Page 48: Primeiros passos no iOS com Objective-C

Vamos tentar...

Page 49: Primeiros passos no iOS com Objective-C

Grandes poderes...

Vantagem: ferramentas para interface

iOS Human Interface Guidelines

Page 50: Primeiros passos no iOS com Objective-C

...e vice-versa...

Construir via código

Escolha

Vantagens e desvantagens

Pode usar XIB!

Page 51: Primeiros passos no iOS com Objective-C

Empolgou...

Page 52: Primeiros passos no iOS com Objective-C

Nananinanão...

Não é RAD!

View é View, código... é ViewController!

Uma coisa é uma coisa...

Page 53: Primeiros passos no iOS com Objective-C

Mission: possible

Nós temos que juntar os dois mundos

Como? Vem comigo...

Page 54: Primeiros passos no iOS com Objective-C

Arraste-me!

Page 55: Primeiros passos no iOS com Objective-C

Sintaxe? De novo?

Opa, a sintaxe, claro...- (IBAction)myButton_OnTouchUpInside:(id)sender;

void myButton_OnTouchUpInside(Object sender);

Page 56: Primeiros passos no iOS com Objective-C

Sintaxe? De novo?

- (IBAction)myButton_OnTouchUpInside:(id)sender;

Mensagem de instância / classeParênteses: tipoRetornoNome

Page 57: Primeiros passos no iOS com Objective-C

Sintaxe? De novo?

- (IBAction)myButton_OnTouchUpInside:(id)sender;

Dois pontos: parâmetroParênteses: tipo (parâmetro)Nome (parâmetro)

Page 58: Primeiros passos no iOS com Objective-C

Ah, não...

Como assim, mais de um?

Pode ser daqui a pouco?

Beleza, segura aí!

Page 59: Primeiros passos no iOS com Objective-C

Ah, sim, tem o Log...

Como assim, função?

Page 60: Primeiros passos no iOS com Objective-C

Se souber usar...

Page 61: Primeiros passos no iOS com Objective-C

Roda e avisa!

Page 62: Primeiros passos no iOS com Objective-C

Achievement

Achievement unlocked: Action

Importante

Eventos -> Mensagens

Page 63: Primeiros passos no iOS com Objective-C

Agora vai!

Page 64: Primeiros passos no iOS com Objective-C

Não foi... ainda!

Não é RAD! - x2

Precisa conectar

“Tomada” pra conectar o “plug”

Page 65: Primeiros passos no iOS com Objective-C

Vai, filhão!

Page 66: Primeiros passos no iOS com Objective-C

Quase...

Page 67: Primeiros passos no iOS com Objective-C

Ah, bom!

Page 68: Primeiros passos no iOS com Objective-C

Achievement

Achievement unlocked: Outlet

Importante

Código -> View

Page 69: Primeiros passos no iOS com Objective-C

É pouco, mas...Três conceitos principais:

View

Action

Outlet

Dá pra fazer bastante!

Page 70: Primeiros passos no iOS com Objective-C

Só isso?

Sempre tem um “D’Artagnan”...

Lembra do Delegate? Então...

Page 71: Primeiros passos no iOS com Objective-C

E agora?Que tal estudar C?

Que tal estudar Objective-C?

Que tal estudar as APIs? Cocoa touch

Que tal estudar MAIS Objective-C?

Page 72: Primeiros passos no iOS com Objective-C

Passa lá!Tem o IP-67 na Caelum! :-)

Tem o livro do Steil na Casa do Código! :-)

Pode ser, eventualmente, talvez...

Page 73: Primeiros passos no iOS com Objective-C

Palavras ao vento...

Inicializadores (init)ProtocolosFoundation (NSObject, NSString, etc.)

Page 74: Primeiros passos no iOS com Objective-C

Ah, eu prometi? Sério?- (void)exibeUmaMensagem:(NSString *)umaMensagem eOutraMensagem:(NSString *)outraMensagem;

Cuidado!exibeUmaMensagem:eOutraMensagem:

Lembra do seletor...[self exibeUmaMensagem:@"That's all," eOutraMensagem:@"Folks!"];

this.exibeUmaMensagem("That's all,", "Folks!");