Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
Programujeme v iTunes Xcode 4
25. května 2011, 00.00 | Dnes a v několika následujících článcích se podíváme blíže na nové vývojové prostředí Apple – Xcode 4. Začneme novinkami, jež nabízí aktuální verse překladače Objective C (jde jen o jednu drobnost, ale příjemnou), a pak se již soustředíme na SDK a jeho (ne)možnosti.
Ve firmě Apple trpí nekritickou láskou k aplikaci iTunes. Musí tomu tak být; jinak by nemohlo nikoho soudného napadnout, že se budou data mezi telefonem a počítačem synchronizovat prostřednictvím přehrávače MP3... ale to odbočuji. Naopak s naším seriálem úzce souvisí to, že se v posledních letech v Apple evidentně snažili do iTunes přesunout i psaní nových aplikací; když zjistili, že to tak úplně nejde, aspoň předělali Xcode tak, aby se iTunes podobalo co nejvíc.
Takže nyní máme vývojové prostředí, které nejenže má vlevo nahoře tlačítka "Play" a "Stop"; dokonce je uprostřed horní lišty okénko, které ukazuje běh procesů přesně stejně, jako iTunes přehrávání skladby – a kvůli tomu nestandardními nesmyslu není lišta vůbec konfigurovatelná... Aspoň že zatím nemáme "semafor" pro zavírání / minimalizaci / zvětšení okna na výšku. Zatím.
Zkuste to přes modem!
Kompletní vývojové prostředí Xcode 4 lze nalézt standardně na stránkách Apple. Pokud náhodou nemáte připojení k Internetu T1, připravte se na kafíčko nebo několik: velikost balíku ukrutně narostla, má cca 4.5 GB. Zato v něm je standardně kompletní podpora obou současných platforem, jak Mac OS X, tak i iOS.
Instalace by měla být bezproblémová; jen je vhodné zvážit, zda provést kompletní upgrade, nebo zda raději instalovat do samostatné složky (např. "/Developer4"), abychom v případě potřeby mohli i nadále používat Xcode 3: jak časem uvidíme, jsou věci, jež Xcode 4 prostě neumí – a také je vzhledem k jeho novosti vždy určité risiko, že narazíme na nějakou chybu, jež vývoj ve čtyřce omezí nebo znemožní. Prozatím bych proto doporučil alespoň na jednom počítači Xcode 3 zachovat. Dobrou zprávou zde je to, že projekty jsou plně vzájemně kompatibilní a lze je bez obtíží přenášet na obě strany.
Příjemná novinka v překladači
Součástí nového SDK je také nová verse překladače, a ta kromě několika oprav chyb (naopak o žádné nové chybě dosud nevím) přináší jednu velmi příjemnou novinku: instanční proměnné lze nyní deklarovat nejen v rozhraní, ale také v rozšíření a v implementaci.
To je příjemné, protože instanční proměnné samozřejmě obecně v rozhraní nemají co dělat. Historicky bývalo zapotřebí je tam umísťovat proto, že podtřídy je musely znát; v současnosti ale už Objective C tento problém nemá. Je tedy jen logické a rozumné instanční proměnné deklarovat v implementaci, a nyní již k tomu není zapotřebí "trik" s atributy:
// SomeClass.h
@interface SomeClass @end
// SomeClass.m
@implementation SomeClass {
int ivar;
...
}
...
Nepříjemné novinky v IDE
Nové Xcode je navrženo s poměrně šílenou ideou "Vše by mělo být v jednom okně a podle toho, co člověk zrovna dělá, se to tam uvnitř může přepínat". Standardně tedy to, nač bývaly velmi pohodlné samostatné panely (především inspektory souborů), je nyní integrováno do hlavního okna (takže přístup k tomu je pramizerný); pro zobrazení výpisů testované aplikace se editor zdrojového textu vertikálně rozdělí, a výpisy se zobrazí pod ním...Asi nejhorší je to, že přímo do Xcode jsou nyní integrovány i služby Interface Builderu, a jeho okna se to týká také – nelze tedy standardně mít vedle sebe knihovnu objektů a panel inspektoru. S XIBy se v novém Xcode pracuje opravdu špatně, i přes některé docela šikovné novinky.
Postupně si v našem seriálu ukážeme, jak některé z problémů obejít; začneme ale tím, že si ukážeme, jak nové Xcode vypadá a funguje standardně.
Co kde hledat
Okno nového IDE po otevření projektu (a zobrazení výpisu programu, abychom viděli všechny základní prvky) může vypadat zhruba asi nějak takto:
Podívejme se postupně shora dolů (a zleva doprava) na jednotlivé prvky – později si toho o každém z nich řekneme víc:
• titulek okna je víceméně standardní; jen na rozdíl od Xcode 3 nefunguje tažení dokumentové ikony. Přesněji řečeno, funguje, jenže bez ohledu na to, co máme v okně právě otevřeného, se vždy táhne projekt jako celek a nikdy aktuální soubor (toto je, doufejme, jen chyba, již Apple časem opraví);
• o příkazové liště pod ním jsme se již zmínili výše: ačkoli ji lze – díkybohu aspoň za to – skrýt a zobrazit pomocí standardního tlačítka vpravo nahoře, konfigurovatelná bohužel není vinou nesmyslného okénka uprostřed, jež informuje o právě probíhajících procesech a také o množství chyb a varovných hlášení v projektu. Ostatní ovladače v listě si podrobněji popíšeme níže; jen pro orientaci, umožňují sestavení a spuštění cílové aplikace, volbu platformy pro niž se sestavuje a testuje, přepínání grafické podoby okna a otevření okna tzv. Organizeru;
• pod příkazovou lištou je lišta záložek; ty fungují téměř přesně stejně jako v Safari: chceme-li více různých pohledů na projekt, můžeme je otevřít v samostatných záložkách. Záložky lze také "trhat" do samostatných oken, vzájemně přesouvat a-tak-dále;
• nyní je na řadě sloupec při levém okraji okna, který připomíná navigační sloupec Xcode 3: skutečně jím je – a také lecčíms jiným. Říká se mu "Navigátor" a v základním režimu – který vidíme na obrázku – ukazuje zhruba stejnou strukturu projektu a skupin v něm, jako tomu bylo v Xcode 3. Kromě toho jej ale pomocí ikon v liště při jeho horním okraji lze přepnout do režimů, suplujících již neexistující samostatná okna: přehled symbolů, textové vyhledávání, výsledek sestavení (tedy především chyby a varovná hlášení), aktuální stav procesu v debuggeru, seznam breakpointů nebo přehled výpisů. Trochu hodně práce na jeden malý sloupec!
• v centrální oblasti okna je editor zdrojového kódu, který funguje na první pohled hodně podobně jako tomu bývalo v "trojce". Postupně pak začneme narážet na rozdíly: daleko agresivnější automatické doplňování, zcela předělaná podpora pro přístup k souvisícím souborům – umí toho mnohem víc než dříve, ale zato je daleko méně pohodlná –, a tak dále a tak podobně. Jak tomu bylo už v Xcode 3, i zde lze prostor editoru rozdělit na několik panelů, z nichž každý zobrazuje jiný (nebo i týž) zdrojový soubor; podpora pro tuto službu, tzv. "Asistent", je ale nyní dost zmatená a budeme se jí podrobně věnovat později. Velkým kladem naopak je průběžné zobrazování chyb, jež by jinak odhalilo až sestavení;
• pokud jsme litovali sloupec při levém okraji okna, že mu firma Apple naložila nějak mnoho úkolů, sloupec při pravém okraji – říká se mu "Utility" – je na tom ještě daleko hůř. Obsahuje jen v horní části – tedy nad řadou ikonek zhruba v polovině okna, jak jsou vidět na obrázku – inspektor atributů aktuálního souboru (který má sám řadu samostatných polí) a stručnou nápovědu. Otevřeme-li XIB, přibude kompletní sada inspektorů, jež bývala v samostatném panelu v Interface Builderu; otevřeme-li datový model, objeví se zde inspektory jeho entit a atributů;
• dole uprostřed je panel s výpisem testovaného programu. Připadá-li nám příliš jednoduchý, můžeme si jej vertikálně rozdělit na dvě části; výpisy pak budou napravo, kdežto vlevo bude debugger zobrazovat aktuální obsah proměnných;
• zbývá konečně dolní část sloupce při pravém okraji okna: ta obsahuje "knihovny" či "palety" všeho možného – jsou zde vzory pro nově vytvářené soubory, standardní "makra" obsahující běžně užívané úseky kódu, kompletní knihovna objektů grafického uživatelského rozhraní pro XIBy a také média, tj. především seznam všech obrázků, jež jsou v projektu uloženy.
Některé z původních inspektorů jsou nyní integrovány jako samostatné služby editoru zdrojových kódů: lze v něm např. "otevřít projekt", a uvidíme specializovaný editor, který spojuje služby bývalých inspektorů projektu a cílů:
Občas ještě pro některé služby Xcode nad hlavním oknem otevře "lístek" (sheet); vedle celkem nepřekvapivých panelů pro vytvoření nového souboru nebo přidání souborů již existujících do projektu sem patří především editor tzv. "schémat". To je zcela nová záležitost, jež v Xcode 4 nahrazuje a doplňuje dřívější kombinaci pojmenovaných konfigurací a tzv. "executables" – vrátíme se k ní také později.
Organizér
V podstatě vše, co zbývá, narvali programátoři Apple do okna "organizéru". My toto okno známe již z Xcode 3, kde sloužilo především pro přístup k telefonům a jiným iPadům a s tím úzce souvisící služby.
V Xcode 4 k tomu přibyl rozšířený přístup ke známým projektům – příště si vysvětlíme, proč to je poměrně důležité (a proč to patří spíše mezi šikovné novinky "čtyřky", ačkoli je trochu otázka, zda by si to bývalo nezasloužilo samostatné okno), přístup k repositářům správy zdrojových souborů, a snad ze zoufalství ještě do téhož samého okna v Apple narvali přístup k dokumentaci:
Ta je o poznání méně použitelná než tomu bylo v Xcode 3, hlavně proto, že se v nové dokumentaci kamsi bůhvíproč ztratily přehledné obsahy dokumentů :(
Kromě toho ještě má Xcode 4 samostatné okno pro předvolby; do těch se ale pustíme až příště.
Obsah seriálu (více o seriálu):
- Nastal čas na kakao...
- Tak nejdřív kakao ochutnáme...
- Programovací jazyk C: velmi, velmi stručně
- Objective C: to si vysvětlíme podrobněji
- Co jsme si o Objective C ještě neřekli...
- Nastal čas na kakao - Vznik a zánik objektů
- Nastal čas na kakao - Kopírování objektů
- Nastal čas na kakao - Skryté podtřídy
- Nastal čas na kakao - Základní služby objektů
- Nastal čas na kakao - Jak správně psát v Objective C
- Nastal čas na kakao - Jak správně importovat
- Nastal čas na kakao - Podtřídy, delegáti, vkládání, jak se to rýmuje?
- Nastal čas na kakao - Využití kategorií namísto dědičnosti
- Nastal čas na kakao - Vkládání objektů a přesměrování zpráv
- Nastal čas na kakao - Inicializace a rušení objektů
- Nastal čas na kakao - Metody initWith... a designovaný inicializátor
- Nastal čas na kakao - Inicializace: tipy a triky
- Nastal čas na kakao - Accesory: přístup k proměnným instancí
- Nastal čas na kakao - Šedá je teorie, zelený je strom života...
- Nastal čas na kakao - Více o XCode: inspektory
- Nastal čas na kakao - Aplikace RSS2: datový model
- Nastal čas na kakao - Aplikace RSS: implementace datového modelu
- Nastal čas na kakao - Aplikace RSS: parsování XML
- Nastal čas na kakao - Interface Builder a uživatelské rozhraní
- Nastal čas na kakao - Interface Builder: atributy objektů
- Nastal čas na kakao - Interface Builder: atributy objektů
- Nastal čas na kakao - Druhý kontrolér a dokončení aplikace
- Nastal čas na kakao - Drobná vylepšení a zdokonalení...
- Nastal čas na kakao - Ladění
- Nastal čas na kakao - Třídy Foundation Kitu
- Nastal čas na kakao - Třídy Foundation Kitu (2)
- Nastal čas na kakao - Textové řetězce: NS(Mutable)String
- Nastal čas na kakao - Čísla, binární data a další...
- Nastal čas na kakao - Archivace objektů
- Nastal čas na kakao - Trocha magie, aneb distribuované objekty
- Nastal čas na kakao - Málem bychom zapomněli: NSAutoreleasePool
- Nastal čas na kakao - Zpracování výjimek: NSException
- Nastal čas na kakao - NSInvocation a černá magie
- Nastal čas na kakao - Kakao v Tygrovi
- Nastal čas na kakao - Notifikace: nepřímé předávání zpráv
- Nastal čas na kakao - NSUserDefaults
- Nastal čas na kakao - Co nového ve Foundation Kitu
- Nastal čas na kakao – s Intelem, s Intelem, jedeme do...
- Co nového v Xcode
- Začínáme s AppKitem
- Jak MVC v Kakau vypadá doopravdy?
- Jak MVC v Kakau vypadá doopravdy: dokončení
- Přehled tříd AppKitu
- Nastal čas na kakao - Přehled tříd AppKitu 2
- Přehled tříd AppKitu 3: zbývající třídy GUI
- Přehled tříd AppKitu 4: textový systém
- Nastal čas na kakao - Přehled tříd AppKitu 5: hlavně grafika
- Přehled tříd AppKitu 6: dokumentový systém
- Přehled tříd AppKitu 7: dokončení
- Pojmenované vlastnosti objektů
- Pojmenované vlastnosti objektů: implementace
- Pojmenované vlastnosti objektů: relace 1:N
- Pojmenované vlastnosti objektů: řazení jmen a agregační funkce
- Sledování změn objektů
- Sledování změn objektů – ukázka
- Sledování změn objektů – zdrojový kód
- Sledování změn objektů: kód modelu
- Sledování změn objektů: přímý přístup
- Kontroléry a vazby
- Vázání vazeb
- Další vazby s jednoduchým kontrolérem
- Implementace a použití převodu hodnot
- Validace hodnot
- Validace a chyby, a jedna hezká vazba...
- Práce s polem objektů
- Základní vazby NSArrayControlleru
- Převodníky, přepínače, placeholdery
- Mírná vylepšení v mezích zákona
- Objective C 2.0 - novinky z Leoparda
- NSTreeController
- Programování v Cocoa - Pár tipů a triků
- Programování v Cocoa - Základy kreslení
- Kterak nakreslit modrý obdélník...
- Další služby pro kreslení
- Obrázky a písmenka...
- Události a myš
- Lepší práce s myší
- Události klávesnice
- Input Management
- Příkazy a schránka
- Další události
- Táhni a padni
- Byli jsme na tahu; nyní padneme.
- Zvolme si, jak vhodit
- Drobnosti a chybičky
- Speciální případy tahání či házení
- Kterak táhnout něco, co neexistuje?
- Jak na sítě...
- NSURLConnection
- Safari za minutu
- Služby WebKitu
- Kakao v Leopardu
- Druhé Objective C
- Druhé Objective C: různé drobnosti
- Druhé Objective C: kategorie a protokoly
- Druhé Objective C: nový příkaz cyklu
- Druhé Objective C: atributy a accesory
- Druhé Objective C: atributy a accesory
- 64 je dvakrát 32
- Ubicumque dulce est, ibi et acidum invenies...
- Irbis: že prý žádné novinky?
- Blok sem, blok tam, nám už je to všechno jasné...
- Bloky jsou i v AppKitu
- Irbis a Foundation Kit
- Kde jsou má data?
- Kde jsou má data? V NSCache!
- Soubor, jméno, URL, jak se to rýmuje...
- Další podpora NSURL
- Zabíjení!
- A máme tady i...OS!
- Systémové prvky GUI
- Programování pro iOS 1. díl - Rozdíly mezi "i" a "Mac"
- Programování pro iOS - 2. Začínáme programovat
- Programování pro iOS - 3. základní ovladače a propojení GUI s kódem
- Programování pro iOS - 4. Varovná hlášení
- Programování pro iOS - 5. Rámce a jejich řídicí objekty
- Programování pro iOS - 6. Ukládání dat
- Programování pro iOS - 7. Správa paměti a starý restík
- Programování pro iOS - 8. Dokončení aplikace
- Programování pro iOS - 9. Jak dostat aplikaci do iPhone
- Programování pro iOS - 10. Instalace aplikace do cizího iPhone
- Programování pro iOS - 11. Jak dostat aplikaci do libovolného iPhone
- Programování pro iOS - 12. Touching!
- Programování pro iOS - 13. Kreslíme na iPhone
- Programování pro iOS - 14. Udělejme gesto
- Programování pro iOS - 15. Další gesta
- Programování pro iOS - 16. Více prstů, více zábavy
- Programování pro iOS - 17. Podpora standardních gest
- Programování pro iOS - 18. Recognizery v iOS
- Programování pro iOS - 19. Další standardní recognizery
- Programování pro iOS - 20. Co nového v iOSu
- Programování pro iOS - 21. "Multitasking"
- Programování pro iOS - 22. Nulla est honesta avaritia nisi temporis
- Programování pro iOS - 23. Jak se aktivovat, jsme-li v pozadí
- Programování pro iOS - 24. Zbývající drobnosti
- Programování pro iOS - 25. Řídicí objekty rámců
- Programování pro iOS - 26. Jak se dělá UIViewController
- Programování pro iOS - 27. Kde vzít rámce
- Programování pro iOS - 28. Základní služby
- Programování pro iOS - 29. Práce s rámci
- Programování pro iOS - 30. Rotace zařízení
- Programování pro iOS - 31. Správa paměti v rámcích
- Programování pro iOS - 32. Řídicí objekt pro tabulky
- Programování pro iOS - 33. Řídicí objekt pro strom
- Programování pro iOS - 33. Více o UINavigationControlleru
- Programování pro iOS - 35. Ještě jednou UINavigationController
- Programování pro iOS - 36. Po navigátoru taby
- Programování pro iOS - 37. Více o UITabBarControlleru
- Programování pro iOS - 38. Dokončení UITabBarControlleru
- Programování pro iOS - 39. UIPopoverController
- Programování pro iOS - 40. Další triky UIPopoverControlleru
- Programování pro iOS - 41. Zbývající služby UIPopoverControlleru
- Programování pro iOS - 42. UISplitViewController
- Programujeme v
iTunesXcode 4 - Programování pro iOS - 44. Předvolby Xcode 4
- Programování pro iOS - 45. Práce v Xcode 4
- Xcode 4: projekt a cíle
- Xcode 4: práce s cíli
- Xcode 4: Build Settings
- Xcode 4: Build Phases
- Xcode4: Build Phases podruhé
- Xcode 4: Co jsou to Build Rules?
- Xcode4: taje editoru
- Xcode4: automatické doplňování v editoru
- XIBy chyby
- Více o XIBech
- Editor XIBů
- Inspektory pro XIBy
- Vazby mezi objekty v XIBech
- Vazby mezi objekty v kódu
- Paletky Xcode pro XIBy
- Xcode 4: levý sloupec
- Xcode 4: okno Organizer
- Xcode 4: okno Organizer, část druhá
- Xcode 4: co je to Workspace?
- Xcode 4: základy schémat
- Xcode 4: akční schémata