SlideShare uma empresa Scribd logo
1 de 75
Baixar para ler offline
iOS - Primeiros passos
  Desenvolvimento nativo com Objective-C
Quem?
      Osni Oliveira

osni.oliveira@caelum.com.br
          @osnipso
iOS

iPhone / iPhone OS

iPad -> iOS

Veio do Mac OS X

iPhone, iPod touch,
iPad, Apple TV
Mac OS X


Veio do NeXTSTEP
NeXTSTEP
Unix-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 Lion
Xcode & 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?
            1
                     App
 iOS                    2



       mensagens   Delegate
       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 dotNotation
self.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 dotNotation
Errou? 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 / classe
Parênteses: tipo
Retorno
Nome
Sintaxe? De novo?

- (IBAction)myButton_OnTouchUpInside:(id)sender;



Dois pontos: parâmetro
Parê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)
Protocolos
Foundation (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

Mais conteúdo relacionado

Destaque

Plataforma iOS
Plataforma iOSPlataforma iOS
Plataforma iOSernandesjr
 
Trabalho de informatica - Sistema Operacional iOS
Trabalho de informatica - Sistema Operacional iOSTrabalho de informatica - Sistema Operacional iOS
Trabalho de informatica - Sistema Operacional iOSnadilei
 
Sistema Operacional Móvel iOS
Sistema Operacional Móvel iOSSistema Operacional Móvel iOS
Sistema Operacional Móvel iOSDj Black
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Erisvaldo Junior
 
Sistema Operativo iOS
Sistema Operativo iOSSistema Operativo iOS
Sistema Operativo iOSjatzen01
 
Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxErisvaldo Junior
 
SISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSSISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSAna Morales
 
Desenvolvimento de aplicações nativas para ios e android
Desenvolvimento de aplicações nativas para ios e androidDesenvolvimento de aplicações nativas para ios e android
Desenvolvimento de aplicações nativas para ios e androidDiogo Andre Loff
 
Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Helder da Rocha
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
Introdução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS DeveloperIntrodução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS DeveloperHenrique Morbin
 
Programação funcional com swift cocoa heads 24-03
Programação funcional com swift  cocoa heads 24-03Programação funcional com swift  cocoa heads 24-03
Programação funcional com swift cocoa heads 24-03Schwarzenegger Alves
 
Componentização e padrões de projeto e interface em Android
Componentização e padrões de projeto e interface em AndroidComponentização e padrões de projeto e interface em Android
Componentização e padrões de projeto e interface em Androidwelingtonms
 
Desenvolvimento para iOS
Desenvolvimento para iOSDesenvolvimento para iOS
Desenvolvimento para iOSIgor Takenami
 
Padrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedoresPadrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedoresGustavo Bitencourt
 
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Impacta Eventos
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftJuliana Chahoud
 

Destaque (20)

Plataforma iOS
Plataforma iOSPlataforma iOS
Plataforma iOS
 
Trabalho de informatica - Sistema Operacional iOS
Trabalho de informatica - Sistema Operacional iOSTrabalho de informatica - Sistema Operacional iOS
Trabalho de informatica - Sistema Operacional iOS
 
Sistema Operacional Móvel iOS
Sistema Operacional Móvel iOSSistema Operacional Móvel iOS
Sistema Operacional Móvel iOS
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2
 
Sistema Operativo iOS
Sistema Operativo iOSSistema Operativo iOS
Sistema Operativo iOS
 
Sistema Operacional iOS
Sistema Operacional iOSSistema Operacional iOS
Sistema Operacional iOS
 
Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linux
 
SISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSSISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOS
 
SISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSSISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOS
 
Desenvolvimento de aplicações nativas para ios e android
Desenvolvimento de aplicações nativas para ios e androidDesenvolvimento de aplicações nativas para ios e android
Desenvolvimento de aplicações nativas para ios e android
 
Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014
 
Mercado iOS & Swift vs Objective-C
Mercado iOS & Swift vs Objective-CMercado iOS & Swift vs Objective-C
Mercado iOS & Swift vs Objective-C
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Introdução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS DeveloperIntrodução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS Developer
 
Programação funcional com swift cocoa heads 24-03
Programação funcional com swift  cocoa heads 24-03Programação funcional com swift  cocoa heads 24-03
Programação funcional com swift cocoa heads 24-03
 
Componentização e padrões de projeto e interface em Android
Componentização e padrões de projeto e interface em AndroidComponentização e padrões de projeto e interface em Android
Componentização e padrões de projeto e interface em Android
 
Desenvolvimento para iOS
Desenvolvimento para iOSDesenvolvimento para iOS
Desenvolvimento para iOS
 
Padrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedoresPadrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedores
 
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
 

Semelhante a iOS Primeiros Passos

Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamDesenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamAndré Espeiorin
 
Introdução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSIntrodução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSAndrei Rosseti
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developersjuliocoopergames
 
O mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terO mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terÁtilla Silva Barros
 
Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livrepichiliani
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Matheus Calegaro
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersiMasters
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoJorge Cardoso
 
Workshop Kinect
Workshop Kinect Workshop Kinect
Workshop Kinect Ivan Terra
 
Tutorial de introdução à API da BGE
Tutorial de introdução à API da BGETutorial de introdução à API da BGE
Tutorial de introdução à API da BGESolano
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/Rodrigo Vieira
 
Primeiros passos Windows Phone - 3º Campo Grande Game Show
Primeiros passos Windows Phone - 3º Campo Grande Game ShowPrimeiros passos Windows Phone - 3º Campo Grande Game Show
Primeiros passos Windows Phone - 3º Campo Grande Game ShowLeandro Borges
 
Proposta de solução ferramentas-processos
Proposta de solução ferramentas-processosProposta de solução ferramentas-processos
Proposta de solução ferramentas-processosMauricio Bonetti
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.jsFelipe Pedroso
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 

Semelhante a iOS Primeiros Passos (20)

Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamDesenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
 
Introdução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSIntrodução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOS
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developers
 
Testes de software de A a Z
Testes de software de A a ZTestes de software de A a Z
Testes de software de A a Z
 
O mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terO mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria ter
 
2335 inventor
2335 inventor2335 inventor
2335 inventor
 
Inventor
InventorInventor
Inventor
 
Projecto intercalar
Projecto intercalarProjecto intercalar
Projecto intercalar
 
Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livre
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2
 
Principais dicas para UIs do Android
Principais dicas para UIs do AndroidPrincipais dicas para UIs do Android
Principais dicas para UIs do Android
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game Developers
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de Programacao
 
Workshop Kinect
Workshop Kinect Workshop Kinect
Workshop Kinect
 
Tutorial de introdução à API da BGE
Tutorial de introdução à API da BGETutorial de introdução à API da BGE
Tutorial de introdução à API da BGE
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
Primeiros passos Windows Phone - 3º Campo Grande Game Show
Primeiros passos Windows Phone - 3º Campo Grande Game ShowPrimeiros passos Windows Phone - 3º Campo Grande Game Show
Primeiros passos Windows Phone - 3º Campo Grande Game Show
 
Proposta de solução ferramentas-processos
Proposta de solução ferramentas-processosProposta de solução ferramentas-processos
Proposta de solução ferramentas-processos
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.js
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 

iOS Primeiros Passos