Professional Documents
Culture Documents
“Ao contrário de um livro somente com textos, o Use a Cabeça! Desenvolvendo para iPhone
& iPad apresenta uma abordagem divertida, cativante e ainda mais agradável para
aprender sobre o desenvolvimento para iOS. Cobrindo as principais tecnologias, inclusive
Core Data e aspectos ainda mais críticos como design de interfaces, o conteúdo foi
adequadamente escolhido e é de alta qualidade. Onde mais você poderia testemunhar
uma conversa calorosa entre um UIWebView e UITextField?”
—Sean Murphy, designer e desenvolvedor de iOS
“O Use a Cabeça! Desenvolvendo para iPhone & iPad explica o desenvolvimento de aplicativos
de iOS de maneira crescente. Um grande avanço em relação a primeira edição cobrindo
as mudanças associadas ao IOS 4, Xcode 4 e (re)escrever aplicativos para uso no iPad.
A abordagem passo a passo com uma ênfase visual faz com que essa seja uma excelente
maneira de aprender sobre o desenvolvimento de aplicativo para iPhone e iPad, desde os
recursos mais básicos até os mais avançados.”
—Rich Rosen, desenvolvedor de software e coautor do
livro Mac OS X for Unix Geeks
“A grande coisa sobre este livro é sua abordagem passo a passo. Ele não tenta ensinar tudo
– ele apenas lança você diretamente na criação de aplicativos para iOS de uma maneira
amigável e em forma de conversa. É um livro fantástico para quem já sabe codificar e quer
ir direto para a construção de aplicativos para iOS.”
—Eric Shephard, proprietário da Syndicomm
“O Use a Cabeça! Desenvolvendo para iPhone & iPad foi claramente preparado para que
você possa facilmente criar, usar e aprender as tecnologias do iOS sem precisar de muito
conhecimento prévio das ferramentas de desenvolvimento para Macintosh.”
—Joe Heck, fundador da Seattle Xcoders
“Este livro é enfurecedor! Alguns de nós tivemos de sofrer e aprender sobre desenvolvimento
para iOS ‘da maneira difícil’ e nós ficamos amargurados que o mistério tenha acabado.”
—Mike Morrison, fundador do Stalefish Labs
“O Use a Cabeça! Desenvolvendo para iPhone & iPad dá continuidade a crescente tradição
de pegar assuntos técnicos complexos e aumentar sua acessibilidade sem reduzir a
profundidade e o escopo do conteúdo. O desenvolvimento para iPhone tem uma curva de
aprendizado acentuada qualquer que seja a medida, mas com o Use a Cabeça! Desenvolvendo
para iPhone & iPad, essa curva é acompanhada por cordas já preparadas, equipamento de
segurança e um guia experiente! Eu recomendo este livro para qualquer um que precise
rapidamente melhorar seu entendimento sobre o desenvolvimento para esta plataforma
excitante e desafiadora.”
—Chris Pelsor, snogboggin.com
Elogio ao Use a Cabeça!
“Eu acabei de terminar de ler o Use a Cabeça! Análise e Projeto Orientado a Objetos e amei! O
que eu mais gostei sobre o livro foi seu foco no porquê de nós fazermos OOA&D – para
escrever ótimos softwares!”
—Kyle Brown, Distinto Engenheiro, IBM
“Escondidos atrás das figuras engraçadas e fontes doidas está uma apresentação da
OOA&D, séria, inteligente e extremamente bem feita. Ao ler o livro, eu me senti como se
estivesse olhando por cima dos ombros de um engenheiro expert que estava me explicando
quais questões eram importantes a cada passo e por quê.”
—Edward Sciore, Professor Associado, Departamento de Ciência da
Computação, Boston College
“Levando-se tudo em conta, o Use a Cabeça! Desenvolvimento de Software é uma ótima fonte
para qualquer um que deseje formalizar suas habilidades em programação de uma forma
que constantemente engaja o leitor em muitos níveis diferentes.”
—Andy Hudson, Linux Format
“Se você for um desenvolvedor de software novo, o Use a Cabeça! Desenvolvimento de Software
vai fazer você começar com o pé direito. E se você for um desenvolvedor experiente, não
seja tão apressado em ignorar este livro...”
—Thomas Duff, Duffbert’s Random Musings
“No Use a Cabeça! Java tem alguma coisa para todo mundo. Aqueles que aprendem
visualmente, aqueles que aprendem cinestesicamente, todos podem aprender a partir
deste livro. Auxílios visuais fazem as coisas ficarem mais fáceis de serem lembradas, e o
livro é escrito de uma maneira muito acessível – muito diferente da maioria dos manuais
de Java...o Use a Cabeça! Java é um livro valioso. Eu vejo os livros Use a Cabeça! utilizados em
salas de aula, seja em escolas de nível médio ou para adultos. E definitivamente vou voltar
a me referir a este livro, e a recomendá-lo a outros também.”
—Warren Kelly, Blogcritics.org
Elogio a outros livros da série Use a Cabeça!
“Outra coisa boa sobre o Use a Cabeça! Java, 2ª Edição é que ele abre o apetite para mais.
Com uma cobertura mais a frente de tópicos avançados tais como Swing e RMI, você
quase não consegue esperar para mergulhar naquelas APIs e codificar aquele programa
de 10000 linhas em java.net que irá lhe trazer fama e fortuna. Há também uma grande
quantidade de material, e mesmo algumas práticas recomendadas, em redes e threads
– meu próprio ponto fraco. Neste caso, não consegui segurar a gargalhada quando os
autores usaram uma telefonista da década de 50 – sim, você entendeu, aquela senhora
com um penteado parecendo uma colmeia que manualmente conectava as linhas – como
uma analogia para as portas TCP/IP... você realmente devia ir a uma livraria e folhear o
Use a Cabeça! Java, 2ª Edição. Mesmo se você já souber Java, você pode acabar pegando uma
coisa ou outra. E mesmo se não souber, apenas folhear as páginas já é muito divertido.”
—Robert Eckstein, Java.sun.com
“Claro que não é a abrangência do material que faz o Use a Cabeça! Java se sobressair, é o
estilo e a abordagem. Este livro é o mais longe de um livro texto de ciência da computação
ou manual técnico que você vai conseguir. O uso de desenhos, questionários, ímãs de
geladeira (é isso mesmo, ímãs de geladeira...). E, em lugar dos costumeiros exercícios, você
é convidado a fingir que é o próprio compilador e a compilar o código, ou talvez a montar
algum código preenchendo os espaços vazios ou … você já entendeu a ideia geral... A
primeira edição deste livro foi um dos nossos títulos recomendados para aqueles que
eram novos em Java e objetos. Esta nova edição não desaponta e segue os passos de sua
predecessora. Se você é uma daquelas pessoas que cai no sono com um livro tradicional
de computação, então este aqui possivelmente o manterá acordado e aprendendo.”
—TechBookReport.com
“O Use a Cabeça! Web Design é sua passagem para se tornar um mestre em todos aqueles
tópicos complexos, e entender o que está realmente acontecendo no mundo do web
design... Se você ainda não teve seu batismo de fogo utilizando algo tão complexo como o
Dreamweaver, então este livro será uma grande forma de aprender bom web design.”
—Robert Pritchett, MacCompaniom
“É possível aprender web design de verdade a partir de um livro? O Use a Cabeça! Web
Design é a chave para projetar sites amigáveis ao usuário, desde os requisitos do cliente a
storyboards feitos à mão até sites online que funcionem bem. O que diferencia este livro
de outros livros do tipo ‘como construir um site’ é que ele usa as últimas descobertas em
ciência cognitiva e aprendizado para fornecer uma experiência de aprendizado visual
rica em imagens e projetada para a forma como o cérebro melhor funciona e aprende.
O resultado é um poderoso tributo às bases do web design que qualquer biblioteca de
computação vai achar uma importante chave para o sucesso.”
—Diane C. Donovan, California Bookwatch: The Computer Shelf
“Eu definitivamente recomendo o Use a Cabeça! Web Design para todos meus colegas
programadores que querem ter uma ideia do lado mais artístico dos negócios.”
—Claron Twitchell, UJUG
Use a Cabeça! Desenvolvendo
para iPhone & iPad
Segunda Edição
Dan Pilone
Tracey Pilone
Dan
Tracey
viii
conteúdo
Conteúdo (Sumário)
Introdução xxiii
1 Para Começar: Tornando-se Móvel com iOS 1
2 Padrões de Aplicativos para iOS: Olá, Renee! 41
3 Objective-C para o iOS: O E-mail Precisa de Variedade 99
4 Múltiplas Views: Uma Tabela com uma View 141
5 Plists e Modal views: Refinando seu Aplicativo 197
6 Salvar, Editar e Ordenar Dados: Todo Mundo É um Editor… 251
7 Migrando para iPad: Precisamos de Mais Espaço 315
8 Barra de Abas e Core Data:
Aplicativos para Empresas Caçadores de Recompensa 361
9 Migrando e Otimizando com Core Data: As Coisas Estão Mudando 445
10 Câmera, Map Kit e Core Location: Prova no Mundo Real 501
11 UI do iPad: Interfaces Naturais 563
i Deixados de Lado: As 4 Coisas Top (das quais não falamos) 601
ii Preparando um Aplicativo para Distribuição: Prepare-se para a App Store 611
ix
conteúdo
1
para começar
Tornando-se móvel com iOS
O iPhone mudou tudo.
E(%F;+-"(G(8=*.+*($*.+>(-+?'="-$"B4(C('@+#'(?+!D($"=(+(%F'.(,'#'(!+=,"$%#(
!+=(%22+($'=76=4(E2(.%2,+2%$%?+2(%E5('@+#'(20+(,#+!"22'.+#"2(."($"3$+>(:"%$+#"2(
."(:%?#+2(.%@%$'%2("(!H="#'2(."(?I."+(!+=,"$"-$"24(C:"2($D=(2%.+(*$%:%/'.+2("=(
"=,#"2'2("(-'(1#"'(=6.%!'(!+=+(.%2,+2%$%?+2("=,#"2'#%'%2>("('(J,,(5$+#"(6(*='(
,:'$'K+#='(,'#'($+.+(."2"-?+:?".+#(*$%:%/'#>(."2."(',#"2"-$'<L"2(%-.%?%.*'%2('$6(
"=,#"2'2(."(@#'-."(#"-+="4(J(J,,:"(K+#-"!"(+(2+K$A'#"("(-M2(,#"!%2'#"=+2(
'N*.1O:+(!+=(+(!+-;"!%="-$+P($"=+2(!"#$"/'(."()*"(?+!D("2$1("-$*2%'2='.+4
x
conteúdo
2
padrões de aplicativos para iOS
Olá, Renee!
Aplicativos têm muitas partes móveis.
EQ>(-'(?"#.'.">(":"2(-0+($D=(-"-;*='(,'#$"(#"':="-$"(=M?":>(='2(":"2($D=(
=*%$+2(controles de UI4(R=($I,%!+(',:%!'$%?+(,'#'(%F;+-"($"=(=*%$+(='%2(.+(
)*"(',"-'2(*=(7+$0+>("("2$1(-'(;+#'(."(!#%'#(*=4(S#'7':;'#(!+=(':@*-2(.+2(
mais complicados widgets(2%@-%&!'($'=76=()*"(?+!D(?'%(,#"!%2'#(,#"2$'#(
='%2('$"-<0+('+(=+.+(!+=+(projetou(2"*(',:%!'$%?+4(T"2$"(!',I$*:+>(?+!D(?'%(
',#"-."#('(*-%#(*=(',:%!'$%?+(='%+#("(':@*-2(.+2(padrões fundamentais de
projeto(*$%:%/'.+2(-+(5UQ(.+(%E54
xi
conteúdo
3
objective-C para o iOS
O e-mail precisa de variedade
Nós fizemos muito no capítulo 2, mas que linguagem era
aquela?
F'#$"2(.+(!M.%@+()*"(?+!D(?"=("2!#"?"-.+(,+."=(:;"(,'#"!"#(K'=%:%'#"2>(='2(
6(;+#'(."("-$"-."#(+()*"(#"':="-$"("2$1('!+-$"!"-.+(,+#(7'%3+(.+2(,'-+24(
E(5UQ(.+(%E5(?"=(!+=(M$%='2(K"##'="-$'2()*"(2%@-%&!'=()*"(?+!D(-0+($"=(
)*"("2!#"?"#(!M.%@+(,'#'($*.+>(='2(?+!D(-0+(,+."("2!#"?"#(',:%!'$%?+2(%-$"%#+2(
2"=("-$"-."#(,":+(="-+2(+(712%!+(.'(:%-@*'@"=(.":"2>(%-!:*%-.+(,#+,#%".'."2>(
$#+!'(."(="-2'@"-2("(@"#"-!%'="-$+(."(="=M#%'4(5"(?+!D(-0+($#'7':;'#(-%22+>(
$+.+2(+2(2"*2(',:%!'$%?+2(2"#0+(',"-'2(A%.@"$2(,'.#0+V(C(?+!D()*"#(='%2(.+()*"(
apenas widgets, certo?
xii
conteúdo
4
múltiplas views
Uma tabela com uma View
A maioria dos aplicativos para iOS tem mais de uma view.
TM2("2!#"?"=+2(*=(',:%!'$%?+(7'!'-'(!+=(*='(?%"A>(='2()*':)*"#(*=()*"(N1(
*2+*(*=(2='#$,;+-"(2'7"()*"('(='%+#%'(.+2(',:%!'$%?+2(-0+(6('22%=4(J:@*-2(
.+2(='%2(%=,#"22%+-'-$"2(',:%!'$%?+2(,'#'(%E5(,+#('I(K'/"=(*=(@#'-."($#'7':;+(
:%.'-.+(!+=(%-K+#='<L"2(!+=,:"3'2(*$%:%/'-.+(=W:$%,:'2(?%"A4(X'=+2(!+="<'#(
!+=(!+-$#+:'.+#"2(."(-'?"@'<0+("($'7:"(?%"A2>(!+=+(+($%,+()*"(?+!D(?D(-+2(
2"*2(',:%!'$%?+2(."(9'%:("(Y+-$'!$4(5M()*"(?'=+2(K'/"#(%22+(!+=(*='(7'$%.'444
xiii
conteúdo
5
plists e modal views
Refinando seu aplicativo
Então você tem este aplicativo quase funcional…
C2$'(6('(;%2$M#%'(."($+.+(',:%!'$%?+V(X+!D(!+:+!'(,'#'(K*-!%+-'#(':@*='(!+%2'>(
."!%."('.%!%+-'#(':@+>(,#"!%2'(K'/"#(':@*='(#"K'$+#'<0+("(#"2,+-."('(':@*=(
K"".7'!Z(.'(J,,(5$+#"4(U"2"-?+:?"#(*=(',:%!'$%?+()*'2"(-*-!'(6(*=(,#+!"22+(
:%-"'#>(='2(;1(=*%$+(+()*"(2"(',#"-."#(-"22"(,#+!"22+4
xiv
conteúdo
6
salvar, editar e ordenar dados
Todo mundo é um editor…
Exibir dados é legal, mas inserir e editar informação é o
que faz um aplicativo realmente bombar.
E(U#%-Z9%3"#(6(M$%=+([(":"(*2'(':@*='(!*2$+=%/'<0+(."(!6:*:'>("($#'7':;'(!+=(
.%!%+-1#%+2("=(,:%2$2(,'#'("3%7%#(.'.+24(\(*=(',:%!'$%?+(W$%:(,'#'(#"K"#D-!%'>("(?+!D(
$"=(*=(7+=(,+-$+(."(,'#$%.'(,'#'(%-2"#%#(-+?+2(.#%-Z24(J@+#'>(6(;+#'(."(.'#('+(
*2*1#%+(':@*='(;'7%:%.'."(,'#'(=+.%&!'#(+2(.'.+2([(2':?'#>(".%$'#("(+#."-'#([(
,'#'(K'/"#(!+=()*"(":"(2"N'(='%2(W$%:(,'#'($+.+24(T"2$"(!',I$*:+>(?'=+2(.'#(*='(
+:;'.'(-+2(,'.#L"2(."(".%<0+(.+2(',:%!'$%?+2(,'#'(%E5("(!+=+(@*%'#(*2*1#%+2(
!+=(+(T'?(Y+-$#+::"#4
xv
conteúdo
7
migrando para iPad
Precisamos de mais espaço
iPhones são ótimos, mas uma tela maior pode ser melhor.
]*'-.+(+(%F'.(K+%(:'-<'.+>(':@*='2(,"22+'2(.%22"#'=()*"("#'(82M(*=(%F;+-"(
@#'-."B(^='2>(+,2>(2"=(+($":"K+-"_4(C=(?1#%+2(,+-$+2>(":"(6>(='2(')*":'($":'('7#"(
=*%$'2(+,+#$*-%.'."2(,'#'(=":;+#(%-$"#'<0+(.+(*2*1#%+4(9'%2(?%.'(#"':(-'($":'(
2%@-%&!'()*"('(:"%$*#'(6(='%2(!+-K+#$1?":>('2(,1@%-'2(.'(A"7(20+(?%2*':%/'.'2(
='%2(K'!%:="-$"("(+(.%2,+2%$%?+(,+."('@%#(='%2(,'#"!%.+(!+=(*=(:%?#+4(E*(*=(
!':"-.1#%+4(E*(=*%$'2(+*$#'2(!+%2'2()*"(?+!D(N1(2'7"(*2'#>(!+=+(*=(="-*444
xvi
conteúdo
8
barra de abas e core data
Aplicativos para empresas
Aplicativos para empresas significam gerenciamento de
mais dados de maneiras diferentes.
`#'-."2("(,")*"-'2("=,#"2'2(20+(*=(="#!'.+(2%@-%&!'$%?+(,'#'(',:%!'$%?+2(
."(%F;+-"("(%F'.4(R=(,")*"-+(','#":;+(."(=0+(!+=(*=(',:%!'$%?+(!*2$+=%/'.+(
,+."(2"#(%-!#I?":(,'#'("=,#"2'2()*"(,+22*'=(")*%,"2(-'(#*'4(J(='%+#%'(."22"2(
',:%!'$%?+2(?'%(@"#"-!%'#(=*%$+2(.'.+2(">(."2."(+(%E5(a4b>(;1(*=(2*,+#$"(
"=7*$%.+('+(Y+#"(U'$'4(S#'7':;'-.+(!+=(%22+("(!+=(+*$#+(-+?+(!+-$#+:'.+#>($'7(
7'#(!+-$#+::"#>(?'=+2(!+-2$#*%#(*=(',:%!'$%?+(,'#'('(N*2$%<'V
xvii
conteúdo
9
migrando e otimizando com core data
As coisas estão mudando
Temos um ótimo aplicativo sendo desenvolvido.
E(%c+*-$de*-$"#(!'##"@+*(!+=(2*!"22+(+2(.'.+2(."()*"(+(c+7(,#"!%2'("(+(."%3'(
?"#(+2(K*@%$%?+2(."(*='(='-"%#'(K1!%:4(9'2("()*'-.+(+2(.'.+2($%?"#"=(."(=*.'#f(
c+7()*"#(-+?'2(K*-!%+-':%.'."2>("(+()*"(%22+(K'/(!+=(-+22+(=+.":+(."(.'.+2f(
T"2$"(!',I$*:+>(?+!D(?'%(',#"-."#('(:%.'#(!+=(=*.'-<'2(.+(2"*(=+.":+(."(.'.+2(
"('($%#'#(?'-$'@"=(."(='%2(!'#'!$"#I2$%!'2(.+(Y+#"(U'$'4
xviii
conteúdo
10
câmera, map kit e core location
Prova no mundo real
Os dispositivos de iOS sabem onde eles estão e o que
eles veem.
Y+=+()*':)*"#(*2*1#%+(."(%F;+-">(%F+.(S+*!;(+*(%F'.(2'7">("22"2(.%2,+2%$%?+2(
?0+(=*%$+(':6=(.+(@"#"-!%'="-$+(."(.'.+2g(":"2($'=76=($%#'=(K+$+2>(."2!+7#"=(
2*'(:+!':%/'<0+("(#"W-"=("22'(%-K+#='<0+(,'#'(*$%:%/'<0+(-+(2"*(',:%!'$%?+4(
J(7":"/'(2+7#"(%-!+#,+#'#("22'2(!'#'!$"#I2$%!'2("2$1(-+(K'$+(."()*">(',"-'2(
*2'-.+('2(K"##'="-$'2()*"(+(%E5(:;"(.1>(."(#","-$"(?+!D(,+."(%=,+#$'#(&@*#'2>(
:+!':%/'<L"2("(=','2(2"=(=*%$'(!+.%&!'<0+4
xix
conteúdo
11
UI do iPad
Interfaces Naturais
Com o iPad, tudo é sobre a existência no mundo real.
Y#%'=+2(*='(?"#20+(%F'.(712%!'(."(*=(',:%!'$%?+("3%2$"-$"(,'#'(+(U#%-Z9%3"#(;1(
':@*-2(!',I$*:+2>(='2('@+#'(6('(;+#'(."(!#%'#(*='(%-$"#K'!"()*"(K*-!%+-"(!+=(
':@*=(!+-;"!%="-$+(.+(=*-.+(#"':4(J+(%=%$'#(!+%2'2()*"('2(,"22+'2(*$%:%/'=(-+(
=*-.+(#"':>(+2(*2*1#%+2(2'7"=(+()*"(K'/"#(!+=(*='(%-$"#K'!"(',"-'2('7#%-.+(
+(',:%!'$%?+4(R$%:%/'#"=+2(':@*-2(":"="-$+2(.+(=*-.+(#"':(,'#'('N*.'#(+(c+7('(
!',$*#'#(+2(?%:L"2444
[NSString
stringWith
Format:
@”<html>...
.css
Fugitive.css
xx
conteúdo
i
apêndice i, sobras
As 4 coisas top (das quais não falamos)
Já sentiu que algo estava faltando? Sabemos o que você
quer dizer…
h*2$+()*'-.+(?+!D(,"-2'?'()*"("2$'?'($*.+(:1>($%-;'(='%24(T0+(,+.I'=+2(."%3'#(
?+!D(2"=(':@*-2(."$':;"2("3$#'2>(!+%2'2()*"(-0+(,*."=+2("-!'%3'#(-+(#"2$+(.+(:%?#+4(
F":+(="-+2>(-0+(2"(?+!D()*%2"#(!'##"@'#("22"(:%?#+(2"=(*='(!'%3'(="$1:%!'(!+=(
#+.%-;'24(C-$0+>(.D(*='(+:;'.'("(?"N'(+()*"(?+!D(^'%-.'_(,+."("2$'#(,"#."-.+4
xxi
conteúdo
ii
apêndice ii, preparando um aplicativo para
distribuição
Prepare-se para a App Store
Você quer colocar seu aplicativo na App Store, certo?
J$6('@+#'>(-M2(7'2%!'="-$"($#'7':;'=+2(!+=(',:%!'$%?+2(-+(2%=*:'.+#>(+()*"(
6(:"@':4(T+("-$'-$+>(,'#'(:"?'#('2(!+%2'2(,'#'(+(,#M3%=+(-I?":>(?+!D(?'%(,#"!%2'#(
%-2$':'#(*=(',:%!'$%?+("=(*=(%F;+-">(%F'.(+*(%F+.(S+*!;(#"'%2('-$"2(."($"-$'#(
"-$#'#(-'(J,,(5$+#"4(C('(W-%!'(='-"%#'(."(K'/"#(%2$+(6(2"(#"@%2$#'#(-'(J,,:"(!+=+(
."2"-?+:?".+#4(9"2=+('22%=>(-0+(6(',"-'2(*='()*"2$0+(."(',"#$'#(*=(7+$0+(-+(
i!+."(,'#'(!+:+!'#(+(',:%!'$%?+()*"(?+!D("2!#"?"*(-+(2"*(','#":;+(,"22+':4(F'#'(
K'/"#(%22+>(6(;+#'(."(K':'#(!+=('(J,,:"4
xxii