Primeiros passos no iOS com Objective-C

  • View
    2.693

  • Download
    0

  • Category

    Software

Preview:

DESCRIPTION

Presented at MobileConf 2013, Brazil. The content is in Brazilian Portuguese. Some background on Apple tools for iOS development, such as Xcode. Shows the first steps to beginners looking to develop a first app, explaining fundamentals such as Views, Actions and Outlets. Also, a primer on Objective-C syntax, comparing to other well-known Object-Oriented languages such as Java and C#. Caelum IP-67 course on iOS (in Brazilian Portuguese): http://www.caelum.com.br/curso-ios-iphone-ipad/ "iOS: Programe para iPhone e iPad" book, by Rafael Steil (in Brazilian Portuguese): http://www.casadocodigo.com.br/products/livro-iphone-ipad-ios

Citation preview

iOS - Primeiros passosDesenvolvimento nativo com Objective-C

Osni Oliveira

osni.oliveira@caelum.com.br@osnipso

Quem?

iOS

iPhone / iPhone OS

iPad -> iOS

Veio do Mac OS X

iPhone, iPod touch, iPad, Apple TV

Mac OS X

Veio do NeXTSTEP

NeXTSTEPUnix-like

Mach kernel

BSD

API Orientada a Objetos

Objective-C

No princípio, era...

Project Builder (código)

Interface Builder (interface)

Crise de identidade

Project Builder virou Xcode

Identidade

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

Integrado a partir do Xcode 4.x

Objective-C

1983 (!)

Stepstone (?)

Smalltalk ... não é Simula!

NeXT - 1988

Objective-C

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

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

Perguntas, perguntas...

Precisa ser em Objective-C?

NÃO!

Hã?

RubyMotion

Xamarin (C# / .NET)

Por que Objective-C?

OFICIAL

Mais utilizado

BOM

... *cof* C *cof*

Perguntas, perguntas...

Preciso de um Mac?

SIM!

Calma, explico...

Na verdade, precisa do Xcode...

Calma, explico...

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

Calma, explico...

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

OU SEJA, MAC!

Perguntas, perguntas...

MESMO?

Pois é...

Virtual Machine

“Hackintosh”

Está certo disso?

Posso perguntar?

Como sou esperto...

Difícil

Trabalhoso

Problemas

Quer brincar, quer brincar?

Ah, então, tá bom!

Pretende trabalhar?

Por que não comprar um Mac?

Checklist...Macintosh

OS X Lion / OS X Mountain LionXcode & etc.

iOS SDK... shall we?

Eba, código!

iOS Simulator

Não é emulador

x86_64

Roda o iOS, né...

Parabéns!

Exibiu tela em branco

Ainda tomou bronca!

Como assim?

Vamos pensar... o que acontece quando executa?

main()

Opa, como não?

Program loop? Nah... MUITO MAIS LEGAL

“Sabonetou”...

main() é o chefe

O que o chefe sabe fazer?

Quer que desenhe?

AppiOS

Delegatemensagens

1

2

3

Delegate, putz!

É quem realmente faz as coisas

Em outras palavras, recebe as mensagens

E o que fazer?

Mostra, mostra...

View

Está na tela, é View

Sério. Mesmo.

E jogos?

Também!

View especial

Achievement

Achievement unlocked: View

Importante

Só, queridão?

Então, cria!

Sintaxe?

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

CMCViewController viewController = new CMCViewController();

Propriedades

Uso de dotNotationself.window.rootViewController = viewController;

Preserva a sanidade! Duvida?

Propriedades

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

Propriedades

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

[[self window] setRootViewController:viewController];

Mensagens, em geral...

[alvo seletor];

[target selector];

Mais ou menos como:target.selector();

Ah, nem é difícil...

Vamos combinar:Consegue ler? Use dotNotationErrou? Treine!

Que mais?

Começando a ficar interessante...

Editar View?

Vamos tentar...

Grandes poderes...

Vantagem: ferramentas para interface

iOS Human Interface Guidelines

...e vice-versa...

Construir via código

Escolha

Vantagens e desvantagens

Pode usar XIB!

Empolgou...

Nananinanão...

Não é RAD!

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

Uma coisa é uma coisa...

Mission: possible

Nós temos que juntar os dois mundos

Como? Vem comigo...

Arraste-me!

Sintaxe? De novo?

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

void myButton_OnTouchUpInside(Object sender);

Sintaxe? De novo?

- (IBAction)myButton_OnTouchUpInside:(id)sender;

Mensagem de instância / classeParênteses: tipoRetornoNome

Sintaxe? De novo?

- (IBAction)myButton_OnTouchUpInside:(id)sender;

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

Ah, não...

Como assim, mais de um?

Pode ser daqui a pouco?

Beleza, segura aí!

Ah, sim, tem o Log...

Como assim, função?

Se souber usar...

Roda e avisa!

Achievement

Achievement unlocked: Action

Importante

Eventos -> Mensagens

Agora vai!

Não foi... ainda!

Não é RAD! - x2

Precisa conectar

“Tomada” pra conectar o “plug”

Vai, filhão!

Quase...

Ah, bom!

Achievement

Achievement unlocked: Outlet

Importante

Código -> View

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

View

Action

Outlet

Dá pra fazer bastante!

Só isso?

Sempre tem um “D’Artagnan”...

Lembra do Delegate? Então...

E agora?Que tal estudar C?

Que tal estudar Objective-C?

Que tal estudar as APIs? Cocoa touch

Que tal estudar MAIS Objective-C?

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

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

Pode ser, eventualmente, talvez...

Palavras ao vento...

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

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!");

Obrigado! ;-)osni.oliveira@caelum.com.br

@osnipso