Primeiros passos no iOS com Objective-C
description
Transcript of Primeiros passos no iOS com Objective-C
![Page 1: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/1.jpg)
iOS - Primeiros passosDesenvolvimento nativo com Objective-C
![Page 3: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/3.jpg)
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](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/4.jpg)
Mac OS X
Veio do NeXTSTEP
![Page 5: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/5.jpg)
NeXTSTEPUnix-like
Mach kernel
BSD
API Orientada a Objetos
Objective-C
![Page 6: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/6.jpg)
No princípio, era...
Project Builder (código)
Interface Builder (interface)
![Page 7: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/7.jpg)
Crise de identidade
Project Builder virou Xcode
![Page 8: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/8.jpg)
Identidade
Interface Builder... ficou sendo Interface Builder, mesmo!
Integrado a partir do Xcode 4.x
![Page 9: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/9.jpg)
Objective-C
1983 (!)
Stepstone (?)
Smalltalk ... não é Simula!
NeXT - 1988
![Page 10: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/10.jpg)
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](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/11.jpg)
Perguntas, perguntas...
Precisa ser em Objective-C?
![Page 12: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/12.jpg)
NÃO!
![Page 13: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/13.jpg)
Hã?
RubyMotion
Xamarin (C# / .NET)
![Page 14: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/14.jpg)
Por que Objective-C?
OFICIAL
Mais utilizado
BOM
... *cof* C *cof*
![Page 15: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/15.jpg)
Perguntas, perguntas...
Preciso de um Mac?
![Page 16: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/16.jpg)
SIM!
![Page 17: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/17.jpg)
Calma, explico...
Na verdade, precisa do Xcode...
![Page 18: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/18.jpg)
Calma, explico...
O Xcode só roda no Mac OS X...
![Page 19: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/19.jpg)
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](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/20.jpg)
Perguntas, perguntas...
MESMO?
![Page 21: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/21.jpg)
Pois é...
Virtual Machine
“Hackintosh”
![Page 22: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/22.jpg)
Está certo disso?
![Page 23: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/23.jpg)
Posso perguntar?
![Page 24: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/24.jpg)
Como sou esperto...
Difícil
Trabalhoso
Problemas
![Page 25: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/25.jpg)
Quer brincar, quer brincar?
Ah, então, tá bom!
![Page 26: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/26.jpg)
Pretende trabalhar?
Por que não comprar um Mac?
![Page 27: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/27.jpg)
Checklist...Macintosh
OS X Lion / OS X Mountain LionXcode & etc.
iOS SDK... shall we?
![Page 28: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/28.jpg)
Eba, código!
![Page 29: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/29.jpg)
iOS Simulator
Não é emulador
x86_64
Roda o iOS, né...
![Page 30: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/30.jpg)
Parabéns!
Exibiu tela em branco
Ainda tomou bronca!
![Page 31: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/31.jpg)
Como assim?
Vamos pensar... o que acontece quando executa?
![Page 32: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/32.jpg)
main()
Opa, como não?
Program loop? Nah... MUITO MAIS LEGAL
![Page 33: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/33.jpg)
“Sabonetou”...
main() é o chefe
O que o chefe sabe fazer?
![Page 34: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/34.jpg)
Quer que desenhe?
AppiOS
Delegatemensagens
1
2
3
![Page 35: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/35.jpg)
Delegate, putz!
É quem realmente faz as coisas
Em outras palavras, recebe as mensagens
![Page 36: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/36.jpg)
E o que fazer?
Mostra, mostra...
![Page 37: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/37.jpg)
View
Está na tela, é View
Sério. Mesmo.
![Page 38: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/38.jpg)
E jogos?
Também!
View especial
![Page 39: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/39.jpg)
Achievement
Achievement unlocked: View
Importante
Só, queridão?
![Page 40: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/40.jpg)
Então, cria!
![Page 41: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/41.jpg)
Sintaxe?
Opa, a sintaxe, claro...CMCViewController *viewController = [[CMCViewController alloc] init];
CMCViewController viewController = new CMCViewController();
![Page 42: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/42.jpg)
Propriedades
Uso de dotNotationself.window.rootViewController = viewController;
Preserva a sanidade! Duvida?
![Page 43: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/43.jpg)
Propriedades
Toma essa![[self window] setRootViewController:viewController];
![Page 44: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/44.jpg)
Propriedades
Mais fácil comparar:self.window.rootViewController = viewController;
[[self window] setRootViewController:viewController];
![Page 45: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/45.jpg)
Mensagens, em geral...
[alvo seletor];
[target selector];
Mais ou menos como:target.selector();
![Page 46: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/46.jpg)
Ah, nem é difícil...
Vamos combinar:Consegue ler? Use dotNotationErrou? Treine!
![Page 47: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/47.jpg)
Que mais?
Começando a ficar interessante...
Editar View?
![Page 48: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/48.jpg)
Vamos tentar...
![Page 49: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/49.jpg)
Grandes poderes...
Vantagem: ferramentas para interface
iOS Human Interface Guidelines
![Page 50: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/50.jpg)
...e vice-versa...
Construir via código
Escolha
Vantagens e desvantagens
Pode usar XIB!
![Page 51: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/51.jpg)
Empolgou...
![Page 52: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/52.jpg)
Nananinanão...
Não é RAD!
View é View, código... é ViewController!
Uma coisa é uma coisa...
![Page 53: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/53.jpg)
Mission: possible
Nós temos que juntar os dois mundos
Como? Vem comigo...
![Page 54: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/54.jpg)
Arraste-me!
![Page 55: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/55.jpg)
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](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/56.jpg)
Sintaxe? De novo?
- (IBAction)myButton_OnTouchUpInside:(id)sender;
Mensagem de instância / classeParênteses: tipoRetornoNome
![Page 57: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/57.jpg)
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](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/58.jpg)
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](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/59.jpg)
Ah, sim, tem o Log...
Como assim, função?
![Page 60: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/60.jpg)
Se souber usar...
![Page 61: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/61.jpg)
Roda e avisa!
![Page 62: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/62.jpg)
Achievement
Achievement unlocked: Action
Importante
Eventos -> Mensagens
![Page 63: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/63.jpg)
Agora vai!
![Page 64: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/64.jpg)
Não foi... ainda!
Não é RAD! - x2
Precisa conectar
“Tomada” pra conectar o “plug”
![Page 65: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/65.jpg)
Vai, filhão!
![Page 66: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/66.jpg)
Quase...
![Page 67: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/67.jpg)
Ah, bom!
![Page 68: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/68.jpg)
Achievement
Achievement unlocked: Outlet
Importante
Código -> View
![Page 69: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/69.jpg)
É pouco, mas...Três conceitos principais:
View
Action
Outlet
Dá pra fazer bastante!
![Page 70: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/70.jpg)
Só isso?
Sempre tem um “D’Artagnan”...
Lembra do Delegate? Então...
![Page 71: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/71.jpg)
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](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/72.jpg)
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](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/73.jpg)
Palavras ao vento...
Inicializadores (init)ProtocolosFoundation (NSObject, NSString, etc.)
![Page 74: Primeiros passos no iOS com Objective-C](https://reader036.fdocumentos.tips/reader036/viewer/2022081502/5590b5f11a28ab035f8b4616/html5/thumbnails/74.jpg)
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!");