Page 1


Dave Mark, Jeff LaMarche

iPhone SDK Průvodce vývojem aplikací pro iPhone a iPod touch

Computer Press, a. s. Brno 2010

K1760.indd 1

16.9.2010 13:25:06


iPhone SDK Průvodce vývojem aplikací pro iPhone a iPod touch Dave Mark, Jeff LaMarche Computer Press, a. s., 2010. Vydání první. Překlad: Jakub Mužík Jazyková korektura: Zdeněk Dan Vnitřní úprava: René Kašík Sazba: René Kašík Rejstřík: Daniel Štreit Obálka: Martin Sodomka

Komentář na zadní straně obálky: Martin Herodek Technická spolupráce: Jiří Matoušek, Zuzana Šindlerová, Dagmar Hajdajová Odpovědný redaktor: Martin Herodek Technický redaktor: Jiří Matoušek Produkce: Petr Baláš

Authorized translation from English language edition Beginning iPhone 3 Development: Exploring the iPhone SDK. Original copyright: © 2009 by Dave Mark and Jeff LaMarche. All rights reserved. Translation: © Computer Press, a.s., 2010. Autorizovaný překlad z originálního anglického vydání Beginning iPhone 3 Development: Exploring the iPhone SDK. Originální copyright: © by Dave Mark and Jeff LaMarche. All rights reserved. Překlad: © Computer Press, a.s., 2010. Computer Press, a. s., Holandská 3, 639 00 Brno Objednávky knih: http://knihy.cpress.cz distribuce@cpress.cz tel.: 800 555 513 ISBN 978-80-251-2820-6 Prodejní kód: K1760 Vydalo nakladatelství Computer Press, a. s., jako svou 3695. publikaci. © Computer Press, a. s. Všechna práva vyhrazena. Žádná část této publikace nesmí být kopírována a rozmnožována za účelem rozšiřování v jakékoli formě či jakýmkoli způsobem bez písemného souhlasu vydavatele.

K1760.indd 2

16.9.2010 13:25:26


Obsah Autoři......................................................................................................................................13 Odborný korektor ..............................................................................................................13 Poděkování...........................................................................................................................14

Předmluva ............................................................................... 15 Předmluva k předchozímu vydání ........................................ 16 Kapitola 1 Vítejte v džungli ..................................................................... 17 O čem tato kniha je ...........................................................................................................18 Co potřebujete, abyste mohli začít .............................................................................18 Co potřebujete vědět předtím, než začnete............................................................20 V čem je programování pro iPhone odlišné? ..........................................................21 Jediná spuštěná aplikace .................................................................................................................21 Pouze jedno okno ..............................................................................................................................21 Omezený přístup ................................................................................................................................22 Omezený čas pro odezvu ................................................................................................................22 Omezená velikost obrazovky .........................................................................................................22 Omezené systémové prostředky ..................................................................................................22 Garbage Collection (automatická správa paměti) není k dispozici .................................23 Několik nových funkcí.......................................................................................................................23 Jiný přístup............................................................................................................................................23

O čem tato kniha je ...........................................................................................................23 Co je v tomto vydání nového? ......................................................................................26 Jste připravení? ...................................................................................................................26

Kapitola 2 Úlitba bohům .......................................................................... 27 Založení projektu v prostředí Xcode ..........................................................................27 Okno projektu v prostředí Xcode .................................................................................................30

Úvod do nástroje Interface Builder .............................................................................33 Co to je nib soubor? ..........................................................................................................................34

K1760.indd 3

16.9.2010 13:25:26


4

Obsah Přidání popisku do rámce ...............................................................................................................35

Několik finálních úprav vzhledu aplikace .................................................................38 Připraveno ke kompilaci a ke spuštění .......................................................................................40

Hotovo ...................................................................................................................................41

Kapitola 3 Základní interakce .................................................................. 43 Softwarová architektura Model-Vzhled-Řízení .......................................................43 Tvorba projektu ..................................................................................................................45 Vytvoření řízení vzhledu..................................................................................................45 Outlety ....................................................................................................................................................46 Akce .........................................................................................................................................................47 Přidávání akcí a outletů do třídy řízení vzhledu......................................................................48 Přidávání akcí a outletů do implementačního souboru ......................................................50

Delegát aplikace.................................................................................................................55 Úprava souboru MainWindow.xib ...............................................................................57 Úprava souboru Button_FunViewController.xib ....................................................58 Vytvoření vzhledu v nástroji Interface Builder.........................................................................58 Propojení všeho dohromady..........................................................................................................61 Testování aplikace ..............................................................................................................................63

Hotovo ...................................................................................................................................63

Kapitola 4 Více zábavy s uživatelským rozhraním ................................. 65 Obrazovka plná ovládacích prvků ...............................................................................66 Aktivní, statické a pasivní ovládací prvky .................................................................67 Tvorba aplikace...................................................................................................................68 Importování obrázku.........................................................................................................................68 Implementace textových polí a obrázkového rámce............................................................69 Přidání obrázkového rámce ............................................................................................................70 Přidání textových polí .......................................................................................................................75 Nastavení atributů druhého textového pole ...........................................................................78 Připojení outletů .................................................................................................................................79

Build and Run ......................................................................................................................79 Skrytí klávesnice po stisknutí tlačítka Done .............................................................................79 Skrytí klávesnice po doteku na pozadí .......................................................................................81

Implementace posuvníku a popisku ..........................................................................83 Outlety ....................................................................................................................................................83 Akce .........................................................................................................................................................83

K1760.indd 4

16.9.2010 13:25:26


Obsah

5

Přidání outletů a akcí.........................................................................................................................83 Přidání posuvníku a popisku ..........................................................................................................84 Propojení akcí a outletů ...................................................................................................................85

Implementace přepínačů, tlačítka a děleného tlačítka .......................................86 Outlety ....................................................................................................................................................86 Akce .........................................................................................................................................................86 Přidání přepínačů, tlačítka a děleného tlačítka .......................................................................89 Propojení outletů přepínačů a akcí..............................................................................................89 Přidání tlačítka .....................................................................................................................................90

Implementace modálního panelu a varovného hlášení .....................................91 Přizpůsobení se metodě delegáta modálního panelu .........................................................91 Zobrazení modálního panelu.........................................................................................................92 Delegát modálního panelu a vytvoření varovného hlášení ...............................................94

Zkrášlení tlačítka ................................................................................................................95 Metoda viewDidLoad ........................................................................................................................96 Kontrolní stavy.....................................................................................................................................97 Roztáhnutelné obrázky ....................................................................................................................97

Zodpovědný uživatel paměti ........................................................................................97 Proběhnutí cílovou páskou ............................................................................................99

Kapitola 5 Automatická rotace a automatická změna velikosti ......... 101 Provedení rotace za využití atributů automatické změny velikosti ............. 103 Specifikace podpory automatické rotace............................................................................... 103 Návrh uživatelského rozhraní s využitím atributů automatické změny velikosti .... 105 Atributy automatické změny velikosti ..................................................................................... 105 Atributy automatické změny velikosti tlačítka ..................................................................... 107

Restrukturalizace rámce vzhledu při jeho otočení ............................................. 108 Deklarace a propojení outletů .................................................................................................... 108 Přesunutí tlačítek při rotaci rámce ............................................................................................ 109

Záměna rámců vzhledu................................................................................................ 111 Outlety ................................................................................................................................................. 112 Akce ...................................................................................................................................................... 112 Deklarace akcí a zásuvek .............................................................................................................. 112 Návrh obou rámců vzhledu ......................................................................................................... 113 Implementace záměny a akce .................................................................................................... 114

Závěr .................................................................................................................................... 116

K1760.indd 5

16.9.2010 13:25:26


6

Obsah

Kapitola 6 Aplikace s více rámci vzhledu.............................................. 117 Aplikace View Switcher................................................................................................. 119 Architektura aplikace s více rámci vzhledu ........................................................... 120 Anatomie rámce obsahu .............................................................................................................. 121

Tvorba aplikace View Switcher .................................................................................. 121 Vytvoření objektu řízení vzhledu a nib souborů.................................................................. 121 Úprava delegáta aplikace ............................................................................................................. 124 SwitchViewController.h ................................................................................................................. 125 Úprava souboru MainWindow.xib ............................................................................................. 125 Zdrojový kód souboru SwitchViewController.m .................................................................. 128 Implementace rámců obsahu ..................................................................................................... 131

Animace přechodu ......................................................................................................... 134 Končíme ............................................................................................................................. 136

Kapitola 7 Lišty záložek a rámce pro výběr .......................................... 137 Aplikace s pikry................................................................................................................ 138 Delegáti a zdroje dat ..................................................................................................... 139 Vytvoření kostry aplikace s lištou záložek ............................................................. 140 Vytvoření souborů........................................................................................................................... 140 Přidání objektu řídícího kořenový rámec ............................................................................... 141

Implementace pikru kalendářního data ................................................................ 146 Implementace pikru s jedním komponentem ..................................................... 149 Deklarace outletů a akcí................................................................................................................ 149 Vytvoření rámce obsahu ............................................................................................................... 149 Implementace řídícího objektu jako zdroje dat a delegáta............................................. 150

Implementace pikru s více komponenty ............................................................... 154 Deklarace outletů a akcí................................................................................................................ 154 Vytvoření rámce obsahu ............................................................................................................... 155 Implementace třídy řízení ............................................................................................................ 155

Implementace vzájemně závislých komponentů ............................................... 158 Tvorba jednoduché hry s pikrem na míru ............................................................. 164 Hlavičkový soubor třídy řízení .................................................................................................... 164 Vytvoření rámce vzhledu .............................................................................................................. 165 Přidání zdrojových obrázků ......................................................................................................... 166 Implementace třídy řízení ............................................................................................................ 166 Metoda spin ....................................................................................................................................... 168

K1760.indd 6

16.9.2010 13:25:26


Obsah

7

Metoda viewDidLoad ..................................................................................................................... 169 Konečné detaily................................................................................................................................ 171 Zapojení frameworku Audio Toolbox ...................................................................................... 174

Poslední zatočení ............................................................................................................ 175

Kapitola 8 Úvod do tabulek ................................................................... 177 Základní charakteristika rámců tabulek ................................................................. 178 Skupinové a prosté tabulky ......................................................................................................... 179

Implementace jednoduché tabulky ........................................................................ 180 Návrh rámce tabulky ...................................................................................................................... 181 Zdrojový kód řízení ......................................................................................................................... 181

Přidání obrázku................................................................................................................ 184 Styly buněk v tabulkách ................................................................................................................ 186

Dodatečná nastavení..................................................................................................... 187 Nastavení míry odsazení ............................................................................................................... 187 Ošetření výběru řádků ................................................................................................................... 188 Změna velikosti písma a výšky řádku ...................................................................................... 189 Co ještě delegát umí?..................................................................................................................... 190

Úprava buněk tabulky................................................................................................... 191 Aplikace Cells (Buňky) .................................................................................................................... 191 Přidávání vnořených rámců do buňky v tabulce ................................................................. 191 Použití vlastní podtřídy třídy UITableViewCell...................................................................... 195

Skupinové a indexované sekce.................................................................................. 199 Vytvoření rámce tabulky ............................................................................................................... 199 Import dat .......................................................................................................................................... 200 Implementace třídy řízení ............................................................................................................ 200 Přidání indexu ................................................................................................................................... 204

Implementace vyhledávací lišty ................................................................................ 204 Redesign aplikace............................................................................................................................ 204 Hluboké měnitelné kopie ............................................................................................................. 205 Aktualizace hlavičkového souboru třídy řízení..................................................................... 207 Úprava rámce .................................................................................................................................... 208 Úprava implementace třídy řízení ............................................................................................. 209

Shrnutí ................................................................................................................................ 219

K1760.indd 7

16.9.2010 13:25:26


8

Obsah

Kapitola 9 Tabulky a navigační objekty ............................................... 221 Navigační objekty ........................................................................................................... 222 Milosrdné zásobníky....................................................................................................................... 222 Zásobník řídících objektů ............................................................................................................. 222

Vytvoření hierarchické aplikace Nav v šesti epizodách .................................... 223 Návrh kostry aplikace Nav ........................................................................................... 226 Vytvoření řídícího objektu pro rámec první úrovně ........................................................... 226 Nastavení navigačního řídícího objektu ................................................................................. 227

První pořízený objekt řízení: Tlačítka detailních informací ............................. 233 Druhý pořízený objekt řízení: Zaškrtni jeden řádek........................................... 239 Třetí podřízený objekt řízení: Ovládací prvky v řádcích tabulky ................... 244 Čtvrtý podřízený objekt řízení: Přesuň mě ............................................................ 250 Režim úprav ....................................................................................................................................... 250 Vytvoření nového řídícího objektu druhé úrovně............................................................... 250

Pátý podřízený objekt řízení: Smaž mě .................................................................. 256 Šestý podřízený objekt řízení: Úprava detailů ..................................................... 261 Vytvoření datového modelu........................................................................................................ 261 Vytvoření řídících objektů ............................................................................................................ 263 Vytvoření řídícího objektu rámce detailů ............................................................................... 266

Ale je tu ještě jeden problém... .................................................................................. 279 Proběhnutí cílovou páskou ......................................................................................... 281

Kapitola 10 Nastavení aplikace a výchozí uživatelské nastavení ......... 283 Seznámení se svazkem nastavení............................................................................. 283 Aplikace AppSettings .................................................................................................... 285 Vytvoření projektu.......................................................................................................... 286 Práce se svazkem nastavení ........................................................................................ 288 Přidání svazku nastavení do vašeho projektu....................................................................... 288 Nastavení seznamu vlastností .................................................................................................... 289 Přidání textového pole pro nastavení vlastnosti ................................................................. 290 Přidání zabezpečeného textového pole pro nastavení vlastnosti ................................ 292 Přidání pole s více hodnotami .................................................................................................... 292 Přidání přepínače pro nastavení vlastnosti............................................................................ 294 Přidání posuvníku pro nastavení vlastnosti ........................................................................... 294 Přidání vnořeného rámce vzhledu pro nastavení vlastností ........................................... 295

Načtení nastavení za chodu vaší aplikace ............................................................. 297

K1760.indd 8

16.9.2010 13:25:27


Obsah

9

Změna výchozího nastavení z vaší aplikace ......................................................... 301 Transport Scotty! ............................................................................................................. 304

Kapitola 11 Základní způsoby uchování dat .......................................... 305 Pískoviště vaší aplikace ................................................................................................. 306 Přístup do složky Documents ..................................................................................................... 307 Přístup ke složce tmp ..................................................................................................................... 307

Strategie ukládání souborů......................................................................................... 308 Uchování dat v jediném souboru .............................................................................................. 308 Uchování dat ve více souborech................................................................................................ 308

Uchování dat aplikace................................................................................................... 308 Serializace seznamů vlastností ................................................................................................... 309

Aplikace Persistence ...................................................................................................... 310 Vytvoření projektu Persistence ................................................................................................... 310 Návrh vzhledu aplikace Persistence ......................................................................................... 311 Úprava tříd aplikace Persistence ................................................................................................ 312 Archivování objektů modelu ....................................................................................................... 316 Implementace protokolu NSCopying ...................................................................................... 317

Aplikace Archiving ......................................................................................................... 319 Implementace třídy FourLines.................................................................................................... 319 Implementace třídy řízení PersistenceViewController....................................................... 321

Využití zabudované databáze SQLite3 ................................................................... 323 Příprava projektu pro práci s SQLite3 ...................................................................................... 326

Core Data ........................................................................................................................... 332 Entity a spravované objekty ........................................................................................................ 334 Přístup k atributům pomocí klíčů .............................................................................................. 335 Zasazení všeho do kontextu........................................................................................................ 336 Vytváření nových spravovaných objektů................................................................................ 337 Načítání spravovaných objektů .................................................................................................. 337 Návrh datového modelu ............................................................................................................... 338 Vytvoření vrstev vzhledu a řízení aplikace Persistence ..................................................... 340 Nastavení třídy řízení PersistenceViewController jako kořenového řídícího objektu vaší aplikace.................................................................................................................................... 345

Plody vaší práce............................................................................................................... 347

Kapitola 12 Kreslení s knihovnami Quartz a OpenGL ........................... 349 Dva pohledy na svět grafiky ....................................................................................... 349

K1760.indd 9

16.9.2010 13:25:27


10

Obsah Kreslící aplikace, kterou vytvoříte v této kapitole ............................................... 350 Kreslení s knihovnou Quartz ...................................................................................... 351 Grafické kontexty knihovny Quartz 2D ................................................................................... 351 Systém souřadnic ............................................................................................................................ 352 Specifikace barev ............................................................................................................................. 354 Zakreslování obrázků do kontextu ........................................................................................... 355 Kreslení tvarů: mnohoúhelníky, čáry a křivky ....................................................................... 355 Vzorník nástrojů knihovny Quartz 2D: Šablony, přechody a přerušované čáry ....... 356

Aplikace QuartzFun........................................................................................................ 356 Vygenerování náhodné barvy .................................................................................................... 358 Definování konstant aplikace ..................................................................................................... 358 Implementace kostry rámce QuartzFunView........................................................................ 359 Přidání outletů a metod akcí do třídy řízení rámce ............................................................ 361 Aktualizace souboru QuartzFunViewController.xib ............................................................ 363 Vykreslení čáry .................................................................................................................................. 365 Vykreslení čtyřúhelníku a elipsy................................................................................................. 366 Zobrazení obrázku .......................................................................................................................... 368 Optimalizace aplikace QuartzFun ............................................................................................. 369

Základy práce s knihovnou OpenGL ES ................................................................. 372 Vytvoření aplikace GLFun ............................................................................................................. 373 Návrh nib souboru, přidání frameworků, spuštění aplikace ........................................... 381

Nic jste se nedozvěděli ................................................................................................. 382

Kapitola 13 Klepnutí, dotyky a gesta ...................................................... 383 Vícedotyková terminologie ......................................................................................... 384 Řetězec příjemců událostí ........................................................................................... 384 Přesměrování události: udržování řetězce událostí naživu .............................................. 385

Vícedotyková architektura........................................................................................... 386 Čtyři metody ošetřující gesta ...................................................................................................... 386

Aplikace Touch Explorer ............................................................................................... 387 Aplikace Swipes............................................................................................................... 390 Implementace více různých druhů švihnutí ......................................................... 393 Detekování více klepnutí ............................................................................................. 395 Detekování štípnutí........................................................................................................ 399 Definování vlastních gest ............................................................................................ 402 Metody ošetřující dotyky na displeji ........................................................................................ 405

Vrchní? Účet prosím!...................................................................................................... 406

K1760.indd 10

16.9.2010 13:25:27


Obsah

11

Kapitola 14 Kde jsem? Hledání cesty s pomocí nástroje Core Location ......................................................... 407 Správce zeměpisné polohy ......................................................................................... 408 Nastavení požadované přesnosti .............................................................................................. 408 Nastavení filtru vzdálenosti ......................................................................................................... 409 Spuštění správce zeměpisné polohy ........................................................................................ 409 Uvážlivé využití správce zeměpisné polohy .......................................................................... 409

Delegát správce zeměpisné polohy......................................................................... 409 Zjišťování aktuální polohy ............................................................................................................ 409 Zjišťování zeměpisné výšky a délky prostřednictvím třídy CLLocation ...................... 410 Upozornění na výskyt chyb ......................................................................................................... 411

Testování frameworku Core Location ..................................................................... 411 Aktualizace správce zeměpisné polohy .................................................................................. 415 Určení překonané vzdálenosti .................................................................................................... 416

Kdo chce kam, pomozme mu tam ........................................................................... 416

Kapitola 15 Akcelerometr ........................................................................ 417 Fyzika akcelerometru .................................................................................................... 417 Přístup k akcelerometru ............................................................................................... 418 Třída UIAcceleration ....................................................................................................................... 419 Implementace metody accelerometer:didAccelerate: ...................................................... 419

Zatřást a rozbít ................................................................................................................. 422 Zdrojový kód, který rozbíjí ........................................................................................................... 423 Načtení souborů simulace............................................................................................................ 426 Konec dobrý, všechno dobré – léčivý dotek ......................................................................... 426

Aplikace Kulička .............................................................................................................. 427 Implementace třídy řízení BallViewController ...................................................................... 428 Zdrojový kód rámce třídy BallView ........................................................................................... 428 Výpočet pohybu kuličky ............................................................................................................... 431

Jdeme dál .......................................................................................................................... 434

Kapitola 16 Fotoaparát a knihovna fotografií........................................ 435 Práce s prohlížečem obrázků a s třídou UIImagePickerController ............... 436 Implementace delegáta objektu řídícího prohlížeč obrázků ......................... 437 Zkouška fotoaparátu a práce s knihovnou............................................................ 438

K1760.indd 11

16.9.2010 13:25:27


12

Obsah Návrh uživatelského rozhraní ..................................................................................................... 439 Implementace třídy řízení CameraViewController .............................................................. 440

Klapka! ................................................................................................................................ 443

Kapitola 17 Lokalizace aplikace .............................................................. 445 Architektura lokalizace ................................................................................................. 445 Práce se soubory řetězců ............................................................................................. 447 Vytvoření souboru řetězců ........................................................................................................... 448

iPhone ve světě: lokalizace vaší aplikace ............................................................... 449 Nahlížení do aktuálních místních a jazykových nastavení ............................................... 452 Otestování aplikace ........................................................................................................................ 452 Lokalizace nib souboru ................................................................................................................. 454 Struktura lokalizovaného projektu............................................................................................ 454 Lokalizace obrázku .......................................................................................................................... 456 Lokalizace ikony aplikace ............................................................................................................. 457 Generování a lokalizace souborů řetězců .............................................................................. 458

Auf Wiedersehen ............................................................................................................. 460

Kapitola 18 Kam dál? ................................................................................ 463 Řešení problémů ............................................................................................................. 463 Dokumentace společnosti Apple ............................................................................................. 464 E-mailové konference .................................................................................................................... 464 Diskusní fóra ...................................................................................................................................... 465 Webové stránky ................................................................................................................................ 465 Blogy..................................................................................................................................................... 466 Davovy a Jeffovy blogy a Twitter ............................................................................................... 466 More iPhone 3 Development ...................................................................................................... 466 A pokud vše selže... ......................................................................................................................... 467

Rozloučení ......................................................................................................................... 467

Rejstřík .................................................................................. 469

K1760.indd 12

16.9.2010 13:25:27


Autoři Dave Mark je dlouholetý vývojář programů pro Macintosh a autor mnoha knih o vývoji programů pro tento počítač, včetně knih Learn C on the Mac (Apress, 2009), The Macintosh Programming Primer series (Addison-Wesley, 1992) a Ultimate Mac Programming (Wiley, 1995). Dave miluje vodu a tráví na ní a nebo v ní tolik času, kolik může. Žije se svou ženou a třemi dětmi ve Virginii. Jeff LaMarche je dlouholetý vývojář programů pro Macintosh a pro iPhone s více než dvaceti lety zkušeností s programováním. Píše o rámci Cocoa a o programovacím jazyku Objective-C do časopisu MacTech Magazine a články pro webovou stránku Apple’s Developer Technical Services. Má zkušenosti s vývojem komerčního softwaru jako vývojář ve firmě PeopleSoft, kde pracoval od počátku devadesátých let a později i jako nezávislý konzultant. V současné době se zaměřuje pouze na programování aplikací pro Macintosh a iPhone.

Odborný korektor Mark Dalrymple je dlouholetý vývojář programů pro Macintosh a Unix, který pracuje na multiplatformních sadách nástrojů, nástrojích pro Internet publishing, vysoce výkonných webových serverech a aplikacích pro koncové uživatele. Je také hlavním autorem knih Advanced Mac OS X Programming (Big Nerd Ranch, 2005) a Learn Objective-C on the Mac (Apress, 2009). Ve volném čase hraje na trombón a na fagot a vyrábí zvířátka z nafukovacích balónků.

K1760.indd 13

16.9.2010 13:25:27


Poděkování Tuto knihu bychom nikdy nenapsali bez podpory našich ohromných, milých a chytrých rodin, přátel a přívrženců. První a nejdůležitější poděkování patří našim milým, Terry a Deneen, za to, že to s námi vydržely a staraly se o všechno ostatní, zatímco jsme se mořili s touto knihou. Při práci na knize jsme seděli dlouhé hodiny zavření v našich spisovatelských komůrkách, a přesto si nikdy nestěžovaly. Jsme opravdu šťastní muži. Knihu bychom také nikdy nenapsali bez podpory všech příjemných lidí z  nakladatelství Apress. Z pouhých vydavatelů se rychle stali našimi přáteli. Clay Anders nás k nakladatelství Apress přivedl a nesl tíhu projektu na svých zádech. Dominic Shakeshaft byl výborným organizátorem, který řešil všechny naše námitky s úsměvem na rtech a vždy našel nějaké smysluplné řešení, které knihu vylepšilo. Náš redaktor, Douglas Pundick, zkontroloval knihu do posledního slova a přišel s některými velmi užitečnými návrhy. Laura Esterman, Beth Christmas a Grace Wong, úžasní projektoví manažeři obou vydání knihy, hnali svojí nezdolnou silou náš pomalu se vyvíjející projekt stále kupředu. Heather Lang a Kim Wimpsett jsou vynikající sazeči, se kterými nám bylo potěšením pracovat; prosíme vás, abyste vysázeli i naši příští knihu! Laura Cheu a produkční tým nějakým záhadným způsobem celý tento tým stmelili dohromady a Dině Quan se zase podařilo vytvořit z našich ve Wordu dokumentů tak krásné tiskové stránky. Kari Brooks_Copony stojí za neuvěřitelně vytříbeným vnitřním grafickým designem knihy. Paul Carlstroem a Pete Aylward dali dohromady popis knihy a představili ji světu. Všem kolegům z nakladatelství Apress mnohokrát děkujeme! Zvláštní poděkování patří našemu neuvěřitelně talentovanému odbornému korektorovi Marku Dalrymplovi – kromě toho, že nám poskytnul odbornou zpětnou vazbu, otestoval všechny zdrojové kódy v knize a pomohl nám je vyladit. Díky Marku! A nakonec patří naše poděkování našim dětem za jejich trpělivost, když jejich otcové tak tvrdě pracovali. Tato kniha je pro vás, Maddie, Gwynnie, Iane, Kai, Danieli, Kelley a Ryane.

K1760.indd 14

16.9.2010 13:25:27


Předmluva Je to zajímavý proces! Když jsme se poprvé dali do psaní knihy o vývoji aplikací pro iPhone, jednalo se čistě o práci z lásky k tématu. Nikdy se nám ani nesnilo o tom, že by naše kniha skončila v rukou tolika čtenářů. Jen si to představte, naše malá kniha se vydává všude na světě. Kdo by si to byl pomyslel? Takže co je v tomto vydání nového? Mnoho! Kvůli začátečníkům jsme prošli každičký řádek zdrojového kódu a přizpůsobili jej SDK 3. Jak asi předpokládáte, revidovali jsme také text knihy a aktualizovali všechny rozbory zdrojového kódu. Prošli jsme všechny korektury z webové stránky knihy a chyby ohlášené na naší vlastní webové stránce http://iphonedevbook.com a udělali vše pro to, abychom opravili každou chybu, která v knize byla. Nic samozřejmě není dokonalé, takže nám prosím pište o jakýchkoliv chybách, které v knize najdete, abychom mohli v opravách pokračovat při každém jejím novém vydání. Má smysl si tuto knihu kupovat, když už máte její předchozí vydání? To je výborná otázka, kterou jsme s nakladatelstvím dopodrobna rozebírali. V knize je mnoho nových maličkostí, včetně nového projektu využívajícího nástroj Core Data, který představuje důležitou a na iPhonu novou technologii uchování dat. Kromě toho jsme se pokusili zjednodušit mnoho rozborů, aby byla některá komplexnější témata snáze pochopitelná. Kniha se určitě změnila k lepšímu. Pokud jste již četli její první vydání a máte pocit, že dobře rozumíte všemu, co jste se v něm dozvěděli, pokračujte knihou More iPhone 3 Development, která pokračuje tam, kde tato kniha končí, a rozebírá úžasné nové technologie uvedené ve třetí verzi SDK. Pokud jste ještě celé první vydání knihy nepřečetli, stále ještě všemu úplně nerozumíte, nebo nás jednoduše chcete podpořit jako autory, určitě si toto druhé vydání kupte. Vaši podporu oceňujeme. Nezapomeňte také navštívit stránku http://iphonedevbook.com a napsat nám pár řádků o vašich vlastních úžasných aplikacích. Těšíme se na vzájemné setkání na našem diskusním fóru! Hodně štěstí při programování!

Dave a Jeff

K1760.indd 15

16.9.2010 13:25:27


Předmluva k předchozímu vydání „Od té doby, co jsem viděl počítač Macintosh, mě až do této chvíle žádná platforma tak nezaujala.“ Toto zvolání jsme v poslední době slyšeli mnohokrát a popravdě řečeno se cítíme stejně. iPhone je vzrušující fantastické dílo techniky geniálně v sobě spojující zábavnost a funkčnost. A co s ním můžete dělat, když jste programátor! Tento nový svět se nám právě začal otevírat. Zkuste chvíli brouzdat na portálu App Store a neubráníte se přívalům inspirace. A pokud není vývoj aplikací pro iPhone nic pro vás, jsou vaše možnosti jako konzultanta vývojářů aplikací pro iPhone neomezené. Zdá se, že svůj produkt chce této platformě přizpůsobit každý. Naše telefony zvoní téměř nepřetržitě. Najdete-li si chvíli, zastavte se na naší webové stránce http://iphonedevbook.com a pozdravte nás. Napište nám o vašich vlastních projektech, rádi o vás uslyšíme. Dave a Jeff

K1760.indd 16

16.9.2010 13:25:27


KAPITOLA 1 Vítejte v džungli Rozhodli jste se, že budete programovat aplikace pro iPhone? Nelze říci, že bychom vám to vyčítali. iPhone může být jednoduše ta vůbec nejzajímavější nová platforma, která se v poslední době objevila; určitě se však jedná o tu nejzajímavější mobilní platformu, kterou stojí za to se zabývat – obzvláště nyní, když firma Apple začala dodávat sadu elegantních, dobře zdokumentovaných nástrojů určených pro vývoj aplikací právě pro iPhone. A díky uvolnění verze 3.0 této sady nástrojů pro vývojáře iPhone software development kit (balíčku pro vývoj aplikací pro iPhone) – SDK – je situace dokonce ještě lepší.

Poznámka Tato kniha byla nově aktualizována a revidována, tak aby ji bylo možné použít s poslední verzí SDK. Na některých místech jsme se rozhodli použít nové funkce nebo metody uvedené ve verzi 3.0, které nemusí být kompatibilní se staršími verzemi SDK. Pokud bude někdy hrozit, že k této situaci dojde, vždy vás na to odpovídajícím způsobem upozorníme. Stáhněte si také nejnovější a nejvyšší verze archivů zdrojových kódů z webové stránky knihy na adrese http://knihy.cpress.cz/K1760. Do těchto zdrojových kódů jsme přidali makra podmínek, které umožňují jejich překládání v nejnovějších i ve starších verzích SDK. Zdrojové kódy budeme aktualizovat při uvolňování nových verzí SDK, takže byste měli web knihy pravidelně kontrolovat.

K1760.indd 17

16.9.2010 13:25:27


18

Kapitola 1: Vítejte v džungli

O čem tato kniha je Tato kniha je průvodcem, který vám pomůže začít vyvíjet vaše vlastní aplikace pro iPhone. Naším cílem je naučit vás základní principy jejich fungování a  navrhování. Při četbě této knihy budete postupně vytvářet množství malých aplikací, z nichž každá je navržená tak, aby ilustrovala specifické vlastnosti iPhonu a ukázala vám, jak je ovládat a pracovat s nimi. Spojíte-li základy získané četbou této knihy se svou vlastní kreativitou, odhodláním a podklady, které dodává společnost Apple, budete disponovat vším potřebným pro tvorbu vašich vlastních profesionálních aplikací pro iPhone.

Poznámka Dave a Jeff založili fórum věnované této knize. Je to skvělé místo pro setkání s kolegy, kteří mají stejné zájmy, a pro získávání odpovědí na vaše otázky. Můžete také odpovídat na otázky ostatních. Toto fórum najdete na adrese http://iphonedevbook.com/forum. Určitě na něj zavítejte!

Co potřebujete, abyste mohli začít Předtím, než začnete psát software pro iPhone, budete potřebovat několik věcí. Úplní začátečníci budou potřebovat počítač Macintosh s procesorem Intel a s operačním systémem Leopard (OS X 10.5.6, nebo novější). Jakýkoliv počítač Macintosh – ať už laptop či desktop – uvolněný do prodeje od poloviny roku 2006 by měl tyto nároky splňovat. Abyste mohli začít, nepotřebujete poslední model počítače, takže by měl dobře posloužit i MacBook nebo Mac Mini. Nicméně čím starší a pomalejší model používáte, tím více získáte zvýšením kapacity operační paměti (RAM). Budete se také muset zaregistrovat, abyste se stali registrovaným vývojářem aplikací pro iPhone. Společnost Apple vyžaduje provedení tohoto kroku předtím, než si budete moci iPhone SDK stáhnout. Zaregistrovat se můžete na této stránce: http://developer.apple.com/iphone/, která je podobná stránce na obrázku 1.1. Na této stránce je odkaz na nejnovější a nejvyšší verzi nástroje iPhone SDK. Klepněte na odkaz a budete přesměrováni na stránku pro přihlášení či registraci k vývojářskému programu firmy Apple. Pokud nemáte Apple ID, klepněte na tlačítko Create Apple ID (Vytvořit Apple ID), vytvořte jej a pak se přihlaste. Jakmile se přihlásíte, budete přesměrováni na hlavní stránku pro vývojáře aplikací pro iPhone. Najdete zde nejen odkaz pro stažení SDK, ale také mnoho dalších odkazů na dokumentaci, videa, vzorové zdrojové kódy a mnoho dalších materiálů věnovaných pokročilejším oblastem vývoje aplikací pro iPhone. Jednou z nejdůležitějších součástí balíčku iPhone SDK je Xcode – integrované vývojové prostředí (IDE) společnosti Apple. Vývojové prostředí Xcode obsahuje nástroje pro tvorbu a ladění zdrojového kódu, kompilování aplikací a zlepšování jejich výkonu. Až tuto knihu dočtete, budete již jeho fanouškem!

K1760.indd 18

25.10.2010 16:03:39


19

Co potřebujete, abyste mohli začít

Obrázek 1.1 Stránka produktu iPhone Dev Center společnosti Apple

Součástí verze SDK, která je zdarma, je také simulátor, který vám umožňuje spouštět většinu programů pro iPhone na vašem počítači Macintosh. Tento simulátor se skvěle hodí pro potřeby výuky programování iPhonu. Verze SDK, která je zdarma, vám však neumožňuje nahrávat aplikace do vašeho iPhonu (nebo iPodu touch). Také vám neumožňuje distribuovat vaše aplikace prostřednictvím obchodu iPhone App Store firmy Apple. Abyste mohli nahrávat vaše aplikace do iPhonu a distribuovat je, musíte zvolit možnost, která zdarma není.

Poznámka Simulátor nepodporuje vlastnosti zařízení, které závisí na jeho hardwaru, jako je například accelerometer (měřič akcelerace) nebo kamera. Chcete-li využívat tyto vlastnosti, budete muset zvolit také jednu z ostatních možností. Jenom pro vaši informaci..

K1760.indd 19

25.10.2010 16:04:02

Profile for Flexibooks

iPhone SDK_LaMarche_Mark  

iPhone SDK_LaMarche_Mark