Xcode
Xcode
Fundamental
Christopher K. Fairbairn
Johannes Fahrenkrug
Collin Ruffenach
Novatec
Original English language edition published by Manning Publications Co., Copyright 2011 by Manning Publications. Portuguese-language edition for Brazil. All rights reserved.
Edio original em ingls publicada pela Manning Publications Co., Copyright 2011 pela Manning Publications.
Edio em portugus para o Brasil. Todos os direitos reservados.
Novatec Editora Ltda. 2012.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta obra, mesmo
parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.
Editor: Rubens Prates
Traduo: Rafael Zanolli
Reviso tcnica: Edgard Damiani
Reviso gramatical: Marta Almeida de S
Editorao eletrnica: Carolina Kuwabata
ISBN: 978-85-7522-291-1
Histrico de impresses:
Maro/2012
Primeira edio
Dados
12-01472
CDD-005.117
ndices para catlogo sistemtico:
1. Objective-C : Linguagem de programas para
computadores : Processamento de dados
005.117
VC20120316
(CIP)
captulo 1
Como um desenvolvedor que est dando seus primeiros passos na plataforma iOS,
voc ter de aprender muitas novas tecnologias e novos conceitos em um curto intervalo de tempo. No peloto de frente dessa sobrecarga de informaes encontra-se
um conjunto de ferramentas de desenvolvimento com as quais voc talvez no esteja
familiarizado e uma linguagem de programao moldada por um grupo de empresas
e eventos histricos nicos.
Aplicativos iOS costumam ser desenvolvidos em uma linguagem de programao
chamada Objective-C e recebem suporte de uma biblioteca chamada Cocoa Touch. Caso voc j tenha desenvolvido aplicativos Mac OS X, deve estar habituado
aos primos dessas tecnologias no ambiente desktop. Ainda assim, importante
notar que as verses iOS dessas ferramentas no fornecem exatamente as mesmas
capacidades das verses desktop, sendo importante que voc conhea as restries,
limitaes e melhorias oferecidas para dispositivos mveis. Em alguns casos, voc
poder at precisar desaprender algumas das prticas habituais que costuma utilizar
no ambiente desktop.
Para desenvolver aplicativos iOS, grande parte de seu trabalho ser feito em um
aplicativo chamado Xcode. O Xcode 4, verso mais recente do IDE, traz o Interface
Builder (para criao da interface do usurio) integrado diretamente nele. O Xcode
4 permite que voc crie, gerencie, implemente e depure seus aplicativos durante
todo o ciclo de vida de desenvolvimento do software. Quando voc estiver criando
um aplicativo que oferea suporte a mais de um tipo de dispositivo iOS, poder ser
necessrio apresentar interfaces de usurio levemente diferentes para tipos especficos de dispositivos, ainda que a mesma lgica subjacente seja utilizada em todas as
18
19
variantes. Ficar mais fcil obter esse resultado se voc estiver utilizando o conceito
de separao modelo-viso-controlador, algo em que o Xcode 4 pode ajud-lo.
Este captulo aborda os passos necessrios para que voc possa utilizar essas ferramentas e criar um pequeno jogo para iPhone; mesmo assim, antes de mergulhar
diretamente no processo tcnico, vamos discutir o histrico das ferramentas de
desenvolvimento iOS e algumas das formas pelas quais o desenvolvimento mvel se
diferencia do desenvolvimento de aplicativos desktop e web.
20
Objective-C Fundamental
A Cocoa Touch tem por base os frameworks Cocoa existentes, utilizados no desenvolvimento de aplicativos desktop para Mac OS X. Porm, em vez de fazer da Cocoa
Touch uma converso literal para dispositivos mveis, a Apple otimizou os frameworks
para aplicativos iPhone e iPod Touch. Nos casos em que considerou que melhorias de
funcionalidade, desempenho ou experincia de usurio poderiam ser obtidas, a Apple
substituiu por inteiro alguns frameworks Cocoa. O UIKit, por exemplo, substituiu
o framework desktop AppKit.
O ambiente de tempo de execuo de software para aplicativos iOS nativos pode ser
visto na figura 1.1. Se substituirmos iOS por Mac OS X no campo da base e alguns
dos frameworks na camada da Cocoa, veremos que se trata essencialmente da mesma
pilha de software que encontramos em aplicativos desktop.
Aplicativo do usurio
APIs
baseadas
em C
Objective-C runtime
Figura 1.1 Ambiente em tempo de execuo de software para aplicativos iOS, mostrando o sistema
operacional, o tempo de execuo da linguagem Objective-C e as camadas do framework Cocoa Touch.
21
iPhone 3G
iPhone 3GS
iPhone 4
iPad
RAM
128 MB
256 MB
512 MB
256 MB
Flash
816 GB
1632 GB
1632 GB
1664 GB
Processador
Celular
3,6 Mbps
7,2 Mbps
Wi-Fi
Sim
Sim
Cmera
2 MP
3 MP AF
Bluetooth
Sim
Sim
GPS
iPad2
512 MB
1664 GB
1 GHz dual-core
1 GHz Apple A4
1 GHz Apple A4
Apple A5
7,2 Mbps
7,2 Mbps
7,2 Mbps
(opcional)
(opcional)
Sim
Sim
Sim
0.92 MP (traseira)
5 MP AF (traseira)
0.3 MP (frontal)
0.3 MP (frontal)
Sim
Sim
Sim (modelos Sim (modelos 3G
3G apenas)
apenas)
22
Objective-C Fundamental
1.2.2 Prepare seu aplicativo para quando uma conexo de rede no estiver disponvel
Na era de computao em nuvem em que vivemos, muitos aplicativos iOS tm de
estar sempre conectados Internet. A plataforma iOS oferece duas formas principais
de conectividade wireless: por rea local, com Wi-Fi 802.11, e por rea de cobertura,
empregando diversos padres de dados utilizados em celulares. As escolhas de conexo variam muito em velocidade, indo de 300 kilobits a 54 megabits por segundo.
Tambm possvel que a conexo desaparea por completo, como quando o usurio
pe o dispositivo em modo de voo, desabilita o roaming durante viagens ou entra
em um elevador ou em um tnel.
Diferentemente do ambiente desktop, no qual a maioria dos desenvolvedores simplesmente presume a disponibilidade de uma conexo de rede, bons aplicativos iOS
devem ser projetados para que possam se adaptar falta da rede por longos intervalos
de tempo ou mesmo a situaes em que a conexo desfeita de modo inesperado. A
pior experincia de usurio para seus clientes ser receber uma mensagem de erro
do tipo no foi possvel se conectar ao servidor quando eles estiverem atrasados
para uma reunio ou quiserem acessar informaes importantes que no exigem
obrigatoriamente uma conexo de rede.
Em geral, importante que voc esteja sempre ciente do ambiente em que seu aplicativo iOS est sendo executado. Suas tcnicas de desenvolvimento devem considerar
no apenas as limitaes de memria e processamento do dispositivo, mas tambm
a forma como o usurio interage com seu aplicativo.
Com isso, podemos dizer que j vimos informaes bsicas suficientes. Agora, vamos
mergulhar direto na criao de um aplicativo iOS!
23
24
Objective-C Fundamental
Figura 1.3 Janela do Finder mostrando a localizao da pasta Developer, que contm todas as ferramentas e
documentao relacionadas a recursos para desenvolvedores.
Assim que tiver localizado a pasta /Developer/Applications, voc no dever ter dificuldades em encontrar e iniciar o Xcode.
25
importante notar que o Xcode no sua nica opo. Ainda que ele fornea todos
os elementos necessrios para que voc desenvolva seus aplicativos sem necessitar
de outros recursos, isso no significa que voc no possa complement-lo com suas
ferramentas favoritas. Por exemplo, caso tenha um editor de texto preferido, no qual
voc se considera mais produtivo, possvel configurar o Xcode para utiliz-lo, em
vez da funcionalidade integrada. Se voc realmente gosta de sofrer, pode at voltar a
utilizar makefiles e a linha de comando.
Socorro! No encontro o aplicativo Xcode
Se voc no encontra uma pasta /Developer, ou se no v nenhuma referncia aos
templates de projetos para iPhone ou iPad quando o Xcode inicializado, consulte o
apndice A e veja como fazer o download e a instalao do software necessrio.
Figura 1.4 Caixa de dilogo New Project do Xcode, mostrando o template View-based Application.
Sua primeira deciso deve ser escolher o tipo de projeto que deseja criar. Isso poder
ser feito selecionando um template que determine o tipo de cdigo-fonte e de configurao que o Xcode dever adicionar automaticamente ao seu projeto.
26
Objective-C Fundamental
Para nosso jogo Coin Toss, voc deve escolher o template View-based Application. Para
selecion-lo, escolha primeiro Application sob o ttulo iOS na aba da esquerda e selecione
View-based Application. Depois, clique em Next no canto inferior direito. D um nome ao seu
projeto e especifique o identificador de empresa necessrio para associar o aplicativo
sua conta iOS Developer. Para esse projeto, utilize o nome CoinToss e digite um
identificador adequado.
O Xcode utiliza os valores referentes ao nome do produto e ao identificador da empresa
para criar o que chamamos de identificador de pacote. Utilizando essa string, o iOS
capaz de identificar individualmente cada aplicativo. Para que seu sistema operacional
permita a execuo do CoinToss, seu identificador de pacote deve corresponder a um
identificador includo em um perfil de provisionamento instalado no dispositivo. Se
o dispositivo no puder encontrar um perfil adequado, ele se recusar a executar o
aplicativo. dessa forma que a Apple controla, com punho de ferro, quais aplicativos
podem ser executados em seus sistemas. Se voc no possui um identificador de empresa adequado ou se no est seguro quanto ao que deve digitar nesse campo, siga
as instrues do apndice A antes de prosseguir neste captulo.
Assim que todos os detalhes tiverem sido digitados, desmarque a caixa Include Unit Tests
e clique em Next para selecionar o local em que deseja salvar seu projeto e os arquivos
de cdigo-fonte gerados.
Socorro! No vejo nenhuma opo relacionada ao iOS
Se voc no vir nenhum template baseado em iOS no dilogo do novo projeto, possvel
que no tenha instalado corretamente o SDK do iOS. Provavelmente, a cpia do Xcode
que voc est executando de um DVD de instalao do Mac OS X, ou talvez voc tenha
feito seu download diretamente no site Apple Developer Connection (ADC). Essa verso
adequada apenas para o desenvolvimento de aplicativos desktop. Instale o SDK iOS
da forma descrita no apndice A e substitua sua cpia do Xcode por uma verso mais
adequada que inclua suporte a desenvolvimento para iPhone e iPad.
Voc pode estar se perguntando que outros tipos de projeto so possveis. A tabela
1.2 lista os templates de projetos iOS mais comuns. Sua escolha depender do tipo
de interface que deseja para seu aplicativo. No fique muito preocupado com essa
seleo; sua deciso no to crtica quanto parece. Assim que seu projeto tiver sido
criado, voc poder alterar o estilo de seu aplicativo ainda que isso seja um pouco
mais difcil, pois o template do projeto no inserir automaticamente todo o cdigofonte. Nesse caso, voc mesmo ter de faz-lo.
27
Tabela 1.2 Templates de projetos disponveis no Xcode para criao de um novo projeto iOS
Tipo de projeto
Descrio
Navigation-based Application
Cria um aplicativo de estilo semelhante ao Contacts, com uma barra de navegao no topo.
OpenGL ES Application
Cria um aplicativo grfico baseado em Open GL ES, indicado para jogos e outras funcionalidades.
Cria um aplicativo de estilo semelhante ao Mail do iPad. Esse tipo de projeto indicado para
representar informaes de estilo master/detail em uma nica tela.
Cria um aplicativo de estilo semelhante ao Clock, com uma barra de guias na base.
Cria um aplicativo de estilo semelhante aos aplicativos Stock e Weather, que pode ser virado para
revelar uma segunda face.
Cria um aplicativo que consiste em uma nica viso. Com essa opo, voc pode desenhar e
responder a eventos de toque vindos da viso personalizada.
Cria um aplicativo que consiste de uma nica janela, na qual voc pode arrastar e soltar controles.
Agora que voc completou o dilogo New Project, ver uma janela de projeto semelhante da figura 1.5. Essa a janela principal do Xcode. esquerda, temos um painel
Project Navigator e, direita, um grande painel contextual para edio.
Figura 1.5 Janela principal do Xcode, com o grupo CoinToss totalmente expandido para revelar os diversos
arquivos de cdigo-fonte do projeto.
28
Objective-C Fundamental
O painel da esquerda lista todos os arquivos que compem seu aplicativo. O grupo
CoinToss representa o jogo inteiro. Se voc expandir esse n, poder visualizar subgrupos menores at que eventualmente chegue aos arquivos que formam o projeto.
Voc est livre para criar seus prprios agrupamentos e organizar os arquivos da
forma que preferir.
Quando voc clicar em um arquivo no painel da esquerda, o painel da direita ser
atualizado para fornecer um editor adequado ao arquivo selecionado. Para arquivos
de cdigo-fonte, com extenso *.h e *.m, um editor de texto tradicional para cdigofonte ser apresentado. Outros tipos de arquivos (como arquivos *.xib de recursos)
esto associados a editores grficos mais complexos.
Alguns grupos do painel da esquerda esto associados a comportamentos especiais
ou simplesmente no representam arquivos. Por exemplo, os itens do grupo Frameworks
indicam bibliotecas de cdigo pr-compilado utilizadas pelo projeto atual.
Quando voc estiver mais vontade com o desenvolvimento de aplicativos no Xcode,
poder explorar as muitas sees apresentadas no painel Project Navigator. Para iniciar
sua jornada, vamos escrever o cdigo-fonte de sua primeira classe.
29
Corresponde @property
- (void) simulateCoinToss:(BOOL)userCalledHeads {
BOOL coinLandedOnHeads = (arc4random() % 2) == 0;
if (coinLandedOnHeads == userCalledHeads)
status.text = @"Correct!";
else
status.text = @"Wrong!";
CABasicAnimation *rotation = [CABasicAnimation Define dois objetos
animationWithKeyPath:@"transform.rotation"];
30
Objective-C Fundamental
rotation.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
rotation.fromValue = [NSNumber numberWithFloat:0.0f];
rotation.toValue = [NSNumber numberWithFloat:720 * M_PI / 180.0f];
rotation.duration = 2.0f;
[status.layer addAnimation:rotation forKey:@"rotate"];
CABasicAnimation *fade = [CABasicAnimation Afeta o rtulo
animationWithKeyPath:@"opacity"];
fade.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
fade.fromValue = [NSNumber numberWithFloat:0.0f];
fade.toValue = [NSNumber numberWithFloat:1.0f];
fade.duration = 3.5f;
[status.layer addAnimation:fade forKey:@"fade"];
}
- (IBAction) callHeads {
[self simulateCoinToss:YES];
}
- (IBAction) callTails {
[self simulateCoinToss:NO];
}
- (void) viewDidUnload {
self.status = nil;
self.result = nil;
}
- (void) dealloc {
[status release];
[result release];
[super dealloc];
}
Gerenciamento de memria
@end
primeira vista, a listagem 1.2 pode lhe parecer longa e assustadora, mas, dividindo-a
em passos menores, voc ver que no difcil entender o que ela faz.
A primeira instruo, , corresponde ao cdigo das declaraes @property em CoinTossViewController.h. O conceito de propriedades e as vantagens de propriedades sintetizadas sero explorados mais detalhadamente no captulo 5.
A maioria da lgica do arquivo CoinTossViewController.m est contida no mtodo
simulateCoinToss:, chamado sempre que o usurio deseja o resultado de um novo sorteio. A primeira linha simula um sorteio gerando um nmero aleatrio, entre 0 e 1,
para representar cara e coroa, respectivamente. O resultado armazenado em uma
varivel que chamamos de coinLandedOnHeads.
31
32
Objective-C Fundamental
escrever esse cdigo e voc poderia gastar muito de seu tempo simplesmente tentando
imaginar o visual adequado dessa implementao.
A melhor alternativa utilizar o Xcode, que permite que voc visualize o layout e
configure os controles de sua interface de usurio, conectando-os ao cdigo-fonte. A
maioria dos templates de projetos iOS utiliza essas tcnicas, e geralmente inclui um
ou mais arquivos *.xib projetados para descrever a interface do usurio. Esse projeto
no uma exceo; clique no arquivo CoinTossViewController.xib no painel Project Navigator
e veja que o painel do editor exibe seu contedo (Figura 1.6).
Figura 1.6 Janela principal do Xcode mostrando a edio de um arquivo *.xib. Na borda esquerda do editor
voc pode ver trs cones, cada um representando um objeto ou um componente GUI diferente, armazenado
no arquivo .xib.
33
Figura 1.7 Arrastando e soltando controles na viso. Note as linhas de ajuste que servem para garantir
que sua interface de usurio esteja de acordo com as diretrizes para interface humana (Human Interface
Guidelines, HIG) do iOS.
34
Objective-C Fundamental
Depois de arrastar e soltar os controles na viso, voc pode redimension-los e ajustar suas posies de acordo com a esttica pretendida. A forma mais fcil de alterar
o texto mostrado por um boto ou um controle clicar duas vezes nele e digitar
o texto. Para alterar outras propriedades, como o tamanho e a cor das fontes, voc
pode utilizar o painel Attributes Inspector, que pode ser acessado pela opo de menu View
> Utilities > Attributes Inspector (Alt-Cmd-4). Quando estiver estilizando sua viso, consulte
a figura 1.2 para referncia.
Com os controles posicionados na interface do usurio, a nica tarefa que resta
conect-los ao cdigo que escrevemos. Lembre-se de que a classe definida no arquivo
de cabealho CoinTossViewController.h requer trs elementos da interface do usurio:
um local para enviar as mensagens callHeads ou callTails sempre que o usurio
quiser iniciar um sorteio;
um UILabel para mostrar o resultado do ltimo sorteio (cara ou coroa);
um UILabel para mostrar o estado do ltimo sorteio (correto ou incorreto).
35
Figura 1.8 Formando visualmente uma conexo entre o controle do boto e a classe
CoinTossViewController, com o recurso de arrastar e soltar.
Se o Xcode se recusar a efetuar uma conexo entre um controle da interface do usurio e um objeto, pode ser que haja um problema no cdigo-fonte: talvez um simples
erro de digitao ou um tipo de dado incorreto. Nesse caso, certifique-se de que o
aplicativo ainda pode ser compilado e corrija os erros que surgirem antes de efetuar
a conexo novamente.
Terminado seu trabalho com os botes, agora voc ter de conectar os controles dos
rtulos classe CoinTossViewController para permitir que o cdigo atualize a interface
do usurio com os resultados do ltimo sorteio.
Para conectar os controles dos rtulos, voc tambm pode utilizar uma operao de
arrastar e soltar como a que vimos. Dessa vez, segurando a tecla Control, clique no cone
que representa a instncia de CoinTossViewController arrastando-o at o rtulo na viso.
Ao soltar o mouse, surgir um menu pop-up permitindo a seleo da propriedade
da classe CoinTossViewController que voc deseja conectar ao controle do rtulo. Esse
processo pode ser visto na figura 1.9. Utilizando-se dele, conecte o rtulo CoinToss
propriedade status e o rtulo intitulado Select Heads or Tails propriedade result.
36
Objective-C Fundamental
Figura 1.9 Formando visualmente uma conexo entre a varivel de instncia de estado e o controle do
rtulo na interface do usurio, com o recurso de arrastar e soltar (segurando a tecla Control).
Para decidir como formar as conexes dos objetos, pense no fluxo das informaes. No
caso de um boto, pression-lo far com que um mtodo do aplicativo seja executado,
ao passo que, no caso da conexo do rtulo, uma alterao no valor da varivel de
instncia da classe dever atualizar a interface do usurio.
Voc pode estar se perguntando como o Xcode determina quais itens devem ser mostrados no menu pop-up. Se voc retornar listagem 1.1, a resposta poder ser vista
nas palavras-chave especiais IBOutlet e IBAction. O Xcode processa o cdigo-fonte e
permite que voc conecte a interface do usurio a qualquer elemento marcado com
um desses atributos especiais.
Nesse estgio, pode ser interessante verificar se voc efetuou corretamente as conexes necessrias. Se voc segurar Control e clicar no cone que representa a instncia de
CoinTossViewController, ver um menu pop-up que lhe permite verificar como todas as
sadas e aes associadas a um objeto esto conectadas. Se voc passar o ponteiro do
mouse sobre uma das conexes, o Xcode destacar o objeto associado. Esse recurso
pode ser visto na figura 1.10.
37
Figura 1.10 Verificao das conexes feitas de, e para o objeto CoinTossViewController.
Com isso, podemos dizer que voc concluiu seu trabalho na interface do usurio.
Agora, seguiremos em frente, verificando se cometemos algum erro, e finalmente
vendo se nosso jogo funciona corretamente.
NIBs vs. XIBs
A interface de usurio para um aplicativo iOS armazenada em um arquivo .xib. Ainda
assim, na documentao e nos frameworks Cocoa Touch, esses arquivos so geralmente
chamados de nibs.
No h problema em trocar esses termos: um arquivo .xib utiliza um formato mais novo
de arquivo baseado em XML, o que facilita o armazenamento do arquivo em sistemas
de controle de reviso e assim por diante.
Um .nib, por outro lado, representa um formato binrio mais antigo, que resulta em
arquivos menores, com maior velocidade de processamento, e assim por diante.
A documentao geralmente se refere a arquivos NIB em vez de XIB, uma vez que,
medida que compila seu projeto, o Xcode converte automaticamente arquivos *.xib para
o formato *.nib.
38
Objective-C Fundamental
Figura 1.11 O editor de texto do Xcode destaca visualmente linhas do cdigo-fonte que apresentam erros de
compilao. Depois de corrigir os erros, a compilao do projeto indicar se voc corrigiu o problema.
39
Ao compilar o jogo de cara ou coroa, voc deve notar a presena de erros que mencionam kCAMediaTimingFunctionEaseInEaseOut, CAMediaTimingFunction e CABasicAnimation. Para
corrigir esses erros, selecione o projeto CoinToss no Project Navigator (primeiro item na viso
em rvore). No editor que surge para esse item, v at a aba Build Phases e expanda a
seo Link Binary with Libraries. A regio expandida deve mostrar uma lista de frameworks
adicionais exigidos por seu aplicativo. Para que as animaes de interface funcionem,
voc ter de clicar no boto +, na base da janela, e selecionar QuartzCore.framework da
lista apresentada.
Para manter tudo organizado, assim que voc tiver adicionado a referncia ao framework QuartzCore, pode ser interessante mov-lo dentro da viso em rvore do
navegador do projeto, de forma a ficar sob a seo Frameworks, ao lado de outros
frameworks dos quais seu aplicativo depende.
40
Objective-C Fundamental
Sempre faa seus testes em um dispositivo iPhone, iPod Touch ou iPad real
Os cdigos de exemplo deste livro foram projetados para ser executados no iOS Simulator.
Essa uma forma rpida e fcil de desenvolver seu aplicativo de modo iterativo, sem que
voc tenha de se preocupar com a conectividade do dispositivo ou com a demora de sua
transferncia para um dispositivo real.
Como o iOS Simulator no uma rplica perfeita de um iPhone, possvel que um
aplicativo funcione no simulador, mas falhe em um dispositivo real. Nunca publique
um aplicativo na App Store do iTunes sem test-lo em um dispositivo real, ou, melhor
ainda, procure testar seu aplicativo em alguns modelos diferentes de dispositivos, como
o iPhone e o iPod Touch.
O iOS Simulator executa seu aplicativo na cpia do Mac OS X utilizada por seu
desktop, o que significa que ocasionalmente podem haver diferenas entre o simulador
e um iPhone de verdade. Um exemplo simples de uma situao em que isso ocorre
pode ser visto no que se refere a nomes de arquivos. No iOS Simulator, nomes de
arquivos geralmente no diferenciam maisculas de minsculas, ao passo que, em
um iPhone, essa diferena se verifica.
Por padro, a maioria dos templates de projetos est configurada para implantar seu
aplicativo no iOS Simulator. Para implantar seu aplicativo em um iPhone real, voc
deve alterar o destino, de iPhone Simulator para iOS Device. A forma mais fcil de
faz-lo selecionar o destino desejado no menu suspenso que temos na parte esquerda
da barra de ferramentas, na janela principal do Xcode (Figura 1.12).
Figura 1.12 Canto superior esquerdo da janela principal do Xcode. A seleo de CoinToss/ iPhone 4.3
Simulator, oferecida pelo menu suspenso, permite que voc alterne entre o iPhone Simulator e o dispositivo iOS.
Ao definir o destino como iOS Device, voc garantir que o Xcode tentar implantar
seu aplicativo em seu iPhone real. Ainda assim, ser necessrio mais uma alterao
antes que isso d certo.
41
Figura 1.13 Definio de um breakpoint para uso pelo depurador sempre que a primeira linha do mtodo
simulateCoinToss: for chamada. Note a presena do marcador na margem, indicando um breakpoint ativo.
O marcador azul indica que essa linha tem um breakpoint habilitado. Se voc clicar
no breakpoint, sua cor mudar para um azul mais claro, indicando que ele foi desabilitado, o que far com que o depurador o ignore at que voc clique novamente
nele, reabilitando-o. Para remover permanentemente um breakpoint, clique sobre ele
e arraste-o para fora da margem. Ao soltar o mouse, voc ver uma pequena animao
indicando o desaparecimento do breakpoint, e ele ser removido.
42
Objective-C Fundamental
43
Figura 1.14 Janela do depurador do Xcode, depois que a execuo atingiu um breakpoint.
Essas opes permitem que voc controle o depurador e ganham importncia quando
ele pausa o aplicativo ou interrompe sua execuo ao atingir um breakpoint. Esses
botes (que nem sempre podem estar todos presentes) permitem que voc realize as
seguintes aes:
Hide Oculta a janela do console do depurador e o painel das variveis para
maximizar o espao de tela oferecido ao editor.
Pause Pausa imediatamente o aplicativo iPhone e entra no depurador.
Continue Executa o aplicativo at que outro breakpoint seja atingido.
Step Over Executa a prxima linha de cdigo e retorna para o depurador.
44
Objective-C Fundamental
1.7 Sumrio
Parabns, voc desenvolveu seu primeiro aplicativo iPhone! Mostre o resultado para
os seus amigos e a sua famlia. Talvez ele no venha a ser o mais novo sucesso da App
Store, mas na criao desse aplicativo voc aprendeu a dominar muitos dos recursos
importantes do IDE Xcode, estando no caminho certo para desenvolver aplicativos
de sucesso.
45
Ainda que Objective-C seja uma linguagem poderosa com muitos recursos, voc ver
que utilizar ferramentas visuais como o Xcode pode produzir grandes melhorias
de produtividade, especialmente durante a prototipagem inicial de seu aplicativo.
Desvincular a lgica de um aplicativo da forma como ela apresentada ao usurio
um mecanismo poderoso que no deve ser subestimado. provvel que a primeira
interface de usurio projetada por voc no seja perfeita. Ser capaz de alter-la, sem
ter de modificar nenhuma linha de cdigo, uma vantagem poderosa.
Da mesma forma, voc pode confiar no framework Cocoa Touch para trabalhar na
implementao de muitos recursos de seu jogo. Por exemplo, as animaes foram
implementadas de modo declarativo: voc especificou pontos de incio e fim para as
operaes de rotao e esmaecimento e deixou que o framework trabalhasse para
redesenhar a tela e efetuar a animao, acelerando ou desacelerando o efeito na medida em que esse se completava.
Como voc continuar vendo, os frameworks Cocoa Touch so muito poderosos.
Se voc tiver de escrever grandes quantidades de cdigo para recursos especficos,
provvel que no esteja aproveitando tudo que o Cocoa pode lhe oferecer.
No captulo 2, vamos nos aprofundar em tipos de dados, variveis e constantes.
Tambm seremos apresentados ao aplicativo gerenciador de aluguis, que veremos
no restante deste livro.