Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
com Objective-C
Paris Buttfield-Addison
Jonathon Manning
Novatec
Authorized Portuguese translation of the English edition of titled Learning Cocoa with Objective-C 3E ISBN
9781449318499 © 2012 Paris Buttfield-Addison, Jonathon Manning. This translation is published and sold by
permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same.
Tradução em português autorizada da edição em inglês da obra Learning Cocoa with Objective-C 3E ISBN
9781449318499 © 2012 Paris Buttfield-Addison, Jonathon Manning. Esta tradução é publicada e vendida com a
permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra.
© Novatec Editora Ltda. [2013].
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo
parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.
Editor: Rubens Prates
Tradução: Lúcia Ayako Kinoshita
Revisão técnica: Edgard Damiani
Revisão gramatical: Lívia Freitag
Editoração eletrônica: Carolina Kuwabata
ISBN: 978-85-7522-342-0
Histórico de impressões:
Abril/2013 Primeira edição
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 – São Paulo, SP – Brasil
Tel.: +55 11 2959-6529
Fax: +55 11 2950-8869
Email: novatec@novatec.com.br
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
Manning, Jonathon
Aprendendo Cocoa com Objective-C / Jonathon
Manning e Paris Buttfield-Addison ; [tradução
Lúcia Ayako Kinoshita]. -- São Paulo : Novatec
Editora, 2013.
13-03184 CDD-005.26
Prefácio.................................................................................................................13
5
6 Aprendendo Cocoa com Objective-C
Ciclo de vida do NSObject.......................................................................56
Alocação e inicialização......................................................................56
Retain e Release..................................................................................57
Finalização e liberação de memória.....................................................57
Capítulo 3 ■ Foundation..........................................................................................58
Objetos mutáveis e imutáveis...................................................................58
Strings.....................................................................................................59
Criando strings.................................................................................. 60
Trabalhando com strings..................................................................... 61
Comparando strings...........................................................................64
Fazendo buscas em strings..................................................................64
Arrays.....................................................................................................65
Enumeração rápida............................................................................ 68
Arrays mutáveis..................................................................................69
Dicionários..............................................................................................70
NSValue e NSNumber..............................................................................72
Dados......................................................................................................73
Carregando dados de arquivos e de URLs............................................73
Serialização e desserialização...............................................................75
Padrões de projeto no Cocoa....................................................................78
Modelo-visão-controlador...................................................................78
Delegação...........................................................................................80
Capítulo 13 ■ Redes..............................................................................................249
Conexões............................................................................................... 249
NSURL............................................................................................250
NSURLRequest.................................................................................251
NSURLConnection........................................................................... 252
NSURLResponse e NSHTTPURLResponse....................................... 252
Criando um aplicativo em rede............................................................... 253
Descobrindo serviços na vizinhança.......................................................254
Buscando bibliotecas compartilhadas do iTunes................................. 255
Capítulo 20 ■ iCloud..............................................................................................347
O que o iCloud armazena...................................................................... 347
Preparando-se para usar o iCloud...........................................................349
Verificando se o iCloud funciona.............................................................351
Armazenando configurações....................................................................351
Armazenamento no iCloud.................................................................... 357
Aprendendo Cocoa
com Objective-C
Paris Buttfield-Addison
Jonathon Manning
Novatec
Authorized Portuguese translation of the English edition of titled Learning Cocoa with Objective-C 3E ISBN
9781449318499 © 2012 Paris Buttfield-Addison, Jonathon Manning. This translation is published and sold by
permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same.
Tradução em português autorizada da edição em inglês da obra Learning Cocoa with Objective-C 3E ISBN
9781449318499 © 2012 Paris Buttfield-Addison, Jonathon Manning. Esta tradução é publicada e vendida com a
permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra.
© Novatec Editora Ltda. [2013].
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo
parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.
Editor: Rubens Prates
Tradução: Lúcia Ayako Kinoshita
Revisão técnica: Edgard Damiani
Revisão gramatical: Lívia Freitag
Editoração eletrônica: Carolina Kuwabata
ISBN: 978-85-7522-342-0
Histórico de impressões:
Abril/2013 Primeira edição
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 – São Paulo, SP – Brasil
Tel.: +55 11 2959-6529
Fax: +55 11 2950-8869
Email: novatec@novatec.com.br
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
Manning, Jonathon
Aprendendo Cocoa com Objective-C / Jonathon
Manning e Paris Buttfield-Addison ; [tradução
Lúcia Ayako Kinoshita]. -- São Paulo : Novatec
Editora, 2013.
13-03184 CDD-005.26
20
Capítulo 1 ■ Ferramentas de desenvolvimento do Cocoa 21
Conhecendo o Xcode
O Xcode está organizado em torno de uma única janela. Cada um de seus
projetos terá uma janela que se adapta para mostrar aquilo em que você está
trabalhando.
Para começar a explorar o Xcode, será necessário, inicialmente, criar um projeto
seguindo os passos a seguir:
1. Inicie o Xcode. Encontre o Xcode abrindo o Spotlight (teclando ⌘-Barra de
espaço) e digitando Xcode. Você também pode encontrá-lo abrindo o Finder,
acessando seu disco rígido e abrindo o diretório Applications. Se algum
projeto tiver sido aberto anteriormente, o Xcode o abrirá para você. Caso
contrário, a tela Welcome to Xcode aparecerá (Figura 1.1).
24 Aprendendo Cocoa com Objective-C
Este livro presume que seus projetos usarão o Automatic Reference Counting,
portanto, certifique-se de que a caixa de seleção esteja marcada em todos os
projetos que forem criados para este livro!
Se estiver escrevendo um aplicativo para a Mac App Store, você também será
solicitado a fornecer a categoria para a App Store (se é um jogo, um app educa-
tivo, um app para redes sociais e assim por diante).
Dependendo do template, você também será solicitado a fornecer outras infor-
mações (por exemplo, a extensão dos arquivos de documentos, se estiver criando
um aplicativo que lide com documentos, como um app para Mac).
Siga os passos a seguir para criar um novo projeto para um aplicativo iOS
chamado HelloCocoa, que o ajudará a conhecer melhor o ambiente do Xcode.
1. Crie um novo aplicativo Cocoa Touch para iOS. Crie seu projeto novo selecionando
File→New→Project ou pressionando ⌘-Shift-N. Selecione Application a partir da
lista iOS, selecione Single-View Application e depois clique em Next. Isso criará
um app com somente uma tela (Figura 1.2).
Se você planeja liberar seu app na App Store ou em algum outro lugar, é
muito importante usar um identificador de empresa que esteja de acordo com
o nome de domínio que você tem. A App Store faz essa exigência, e o fato
de o sistema operacional usar o bundle ID, gerado a partir do identificador
da empresa, significa que usar um nome de domínio do qual você é o dono
elimina a possibilidade de criar acidentalmente um bundle ID que entre em
conflito com o ID de outra pessoa.
5. Clique em Next para criar o projeto. Deixe o restante das configurações conforme
mostrado na figura 1.3.
6. Selecione o local em que o projeto será salvo; você será solicitado a especificá-lo.
Selecione um local que seja adequado a você.
Após ter feito isso, o Xcode abrirá o projeto e você poderá, então, começar
a usar toda a interface do Xcode (Figura 1.4).
Interface do Xcode
Conforme mencionado, o Xcode mostra todo seu projeto em uma janela, a qual
está dividida em várias seções. Você pode abrir e fechar cada seção à vontade,
dependendo do que quer visualizar.
Vamos dar uma olhada em cada uma dessas seções e analisar o que elas fazem.
28 Aprendendo Cocoa com Objective-C
Editor
O editor do Xcode (Figura 1.5) é o local em que você passará a maior parte do
tempo. Toda a edição do código-fonte, o design da interface e a configuração
do projeto acontecem nessa seção do aplicativo, a qual mudará, dependendo
do arquivo que você tiver aberto no momento.
Capítulo 1 ■ Ferramentas de desenvolvimento do Cocoa 29
Botão Run
Ao clicar nesse botão, o Xcode compila e executa o aplicativo. Dependendo do
tipo de aplicativo que você estiver executando e da configuração selecionada no
momento, esse botão produzirá diferentes efeitos:
• Se você estiver criando um aplicativo Mac, o novo app aparecerá no Dock
e será executado em sua máquina.
• Se estiver criando um aplicativo iOS, o novo app será iniciado no iOS
Simulator ou em um dispositivo iOS que estiver conectado, como um
iPhone ou um iPad. Se clicar e segurar esse botão, você poderá mudá-lo
de Run para outra ação, como Test, Profile ou Analyze. A ação Test per-
mitirá que quaisquer testes de unidade que tenham sido definidos sejam
executados; a ação Profile permitirá que o aplicativo Instruments (veja
Capítulo 16) seja executado; a ação Analyze fará uma verificação em seu
código e apontará problemas e bugs em potencial.
Capítulo 1 ■ Ferramentas de desenvolvimento do Cocoa 31
Botão Stop
Clicar nesse botão interromperá qualquer tarefa que o Xcode esteja executando
no momento – se estiver compilando seu aplicativo, essa ação será interrompi-
da; se seu aplicativo estiver executando no depurador nesse momento, ele será
interrompido.
Seletor de esquema
Esquemas (schemes) é o nome dado pelo Xcode para as configurações de cons-
trução (build) de seu aplicativo – ou seja, o que está sendo construído e como.
Seu projeto pode conter vários alvos (targets), que são os produtos finais a serem
criados pelo seu aplicativo. Os alvos podem compartilhar recursos, como código-
-fonte, som e imagens, permitindo que você administre mais facilmente uma
tarefa, como, por exemplo, gerar uma versão iOS de um aplicativo Mac. Não é
necessário criar dois projetos; basta ter um projeto com dois alvos que possam
compartilhar o máximo de código-fonte, conforme desejado.
Para selecionar um alvo, clique no lado esquerdo do seletor de esquemas.
Você também pode escolher o local em que seu aplicativo será executado. Se
estiver gerando um aplicativo Mac, normalmente você vai querer executar seu
aplicativo no Mac que estiver utilizando. Se estiver gerando um aplicativo iOS,
porém, você terá a opção de executar o aplicativo em um simulador de iPhone ou
em um simulador de iPad. (Na verdade, eles são o mesmo aplicativo, mas mudam
de formato, dependendo do aplicativo que é executado nele.) Você também pode
optar por executar o aplicativo em um dispositivo iOS que esteja conectado, se
ele tiver sido instalado corretamente para desenvolvimento.
Botão de breakpoints
O botão de breakpoint controla se os breakpoints estão habilitados ou não.
Breakpoints são pontos que você pode definir em seu código, e que instruem o
depurador a fazer uma pausa no app enquanto ele estiver executando, permitindo
que você inspecione o estado do programa.
Se o botão de breakpoints estiver ativado, o depurador será interrompido em
qualquer breakpoint que for alcançado. Caso contrário, os breakpoints serão
ignorados.
Apresentação de status
A janela de status mostra o que o Xcode está fazendo no momento – gerando
seu aplicativo, fazendo download de documentação, instalando um aplicativo
em um dispositivo iOS e assim por diante.
32 Aprendendo Cocoa com Objective-C
Se houver mais de uma tarefa em progresso no momento, um pequeno botão
aparecerá do lado esquerdo, o qual permitirá que as tarefas sejam ciclicamente
apresentadas, quando clicado.
Seletor de editor
O seletor de editor determina como o editor será apresentado. Você pode optar
por mostrar somente um único editor, o editor com o assistente ou o editor de
versões, que permite comparar diferentes versões de um arquivo, caso você esteja
usando um sistema de controle de versões.
Seletor de visão
O seletor de visão (view) controla se as visões do navegador, do depurador e
de detalhes aparecem na tela. Se estiver com necessidade de espaço na tela, ou
simplesmente quiser que ela esteja menos congestionada, você pode acionar ou
dispensar rapidamente as partes da tela clicando em cada um dos elementos.
Navegador
Do lado esquerdo da janela do Xcode está o navegador (navigator), que apresenta
informações sobre seu projeto (Figura 1.7).
Utilidades
O painel de utilidades (utilities pane, Figura 1.8) mostra informações adicionais
relacionadas com o que você está fazendo no editor. Se estiver editando uma
interface, por exemplo, o painel de utilidades permitirá configurar o elemento
da interface de usuário que estiver selecionado no momento.
O painel de utilidades está dividido em duas seções: o inspetor (inspector), que
mostra detalhes extras e configurações relacionados com o item selecionado
no momento, e a biblioteca (library), que é um conjunto de itens que podem
ser adicionados ao seu projeto. O inspetor e a biblioteca são mais intensamente
utilizados quando você estiver construindo interfaces de usuário. No entanto,
34 Aprendendo Cocoa com Objective-C
a biblioteca também contém vários itens úteis, como templates de arquivos e
porções de código que você pode arrastar e soltar.
Área de depuração
A área de depuração (debug area, Figura 1.9) mostra informações fornecidas pelo
depurador quando o programa está sendo executado. Sempre que quiser ver
o que o aplicativo está informando quando estiver em execução, você poderá
visualizar essa informação na área de depuração.
Nossa interface simples agora está completa (Figura 1.10). Só falta conectá-la
ao código.
Esse código cria uma UIAlertView, que mostra uma mensagem ao usuário em
uma janela pop-up. Ele a prepara configurando seu título para "Hello" e o texto
dentro da janela para “Hello, world!” O alerta é, então, apresentado ao usuário.
Por último, o botão tem seu texto alterado para “I was clicked!”
Capítulo 1 ■ Ferramentas de desenvolvimento do Cocoa 39
O aplicativo está pronto para ser executado. Clique no botão Run no canto su-
perior esquerdo. O aplicativo será iniciado no simulador de iPhone.