Upload
osnipso
View
2.693
Download
0
Embed Size (px)
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
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!");