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:
Začínáme s
Programování pro iOS - 44. Předvolby Xcode 4
1. června 2011, 00.00 | Xcode 4 má bohatou sadu předvoleb, ačkoli zdaleka ne tak bohatou, jako tomu bylo v "trojce". To je dobře, protože jsou přehlednější; zároveň je to ale špatně, protože mnohdy nelze nastavit požadované chování. Pojďme se na ně dnes podívat podrobně.
Jak jsme si slíbili na konci minulého dílu našeho seriálu, dnes se budeme věnovat předvolbám Xcode 4 – ostatně, projít si předvolby a upravit je podle vlastních představ by vždy mělo být prvním krokem práce s libovolnou novou aplikací... možná druhým, po přečtení návodu :)
Přístup k předvolbám je zcela standardní prostřednictvím hlavní nabídky ("Xcode"), a okno předvoleb má také zcela standardní strukturu, v níž je při horním okraji řada ikon, representujících jednotlivé panely předvoleb.
General
V prvém panelu jsou vedle celkem běžných předvoleb pro mechanismus automatického ukládání a pro reaktivaci umlčených varování dvě poměrně důležité položky, jež úzce souvisí právě s novinkami Xcode 4.
"Live Issues" je anglický termín pro to, co jsme v minulém článku opsali slovy "průběžné zobrazování chyb, jež by jinak odhalilo až sestavení". S trochou na této úrovni nepodstatného zjednodušení si to můžeme představit tak, že kdykoli uděláme v nějakém zdrojovém souboru nějakou změnu, Xcode malou chvilku počká, a pak se pokusí projekt znovu sestavit – použivši k tomu stávající (byť i na disk neuložený) obsah zdrojového souboru. Pokud se přitom objeví nějaká chyba nebo varovné hlášení, indikuje je nevtíravá ikonka vlevo (a téměř neviditelný trojúhelníček, který přímo v textu ukazuje místo, kde k problému došlo).
Ačkoli vím nejméně o jednom programátorovi, jemuž tato služba ukrutně vadí, já sám jsem jí nadšen: už mnohokrát mne upozornila na drobné přehlédnutí nebo překlep, kvůli nimž bych jinak musel sestavení projektu opakovat. Doporučuji proto "live issues" ponechat zapnuté; pokud byste zjistili, že vám tato služba osobně nevyhovuje, můžete se jí zbavit právě zde:
Druhá skupina předvoleb úzce souvisí s novou strukturou Xcode: jejím prostřednictvím můžeme určit, co a ve kterém editoru se objeví, pokud klepneme – klepneme s klávesou Alt – poklepeme na nějaký objekt v Navigátoru.
Většina variant je podle názvů poměrně zřejmá, snad jen "Asistent" může být poněkud matoucí: prozatím nám bude stačit, že takto nyní Apple nazývá druhý (i třetí, čtvrtý čí libovolný další) soubor, otevřený v samostatném panelu uvnitř editoru zdrojového textu.
Behaviors
Druhý z panelů předvoleb je pro začátek možná nejdůležitější. Připomeňme, že u Apple nové Xcode navrhli s představou "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"; naštěstí měli ale pořád tolik soudnosti, že detaily tohoto přepínání ponechali konfigurovatelné – a to poměrně bohatě.
V levém sloupci panelu předvoleb "Behaviors" jsou bezmála dvě desítky situací, na něž Xcode dokáže nějak reagovat. Pro každou z nich můžeme nezávisle na ostatních určit, jak ta reakce má vypadat a co vše má zahrnovat: kromě přepínání jednotlivých funkčních bloků v okně je možné automaticky přepínat taby, a dokonce i spustit skript:
Každému samozřejmě vyhovuje jiný postup; domívám se ale, že pro většinu programátorů – přinejmenším těch, již byli zvyklí pracovat v Xcode 3 – bude nejvhodnější nejprve projít tato nastavení a pečlivě povypínat všechny automatické změny a přesuny, u nichž si nejsou zcela jisti, že o ně stojí.
Bohužel, jakkoli situací, jež mohou akce vyvolávat, není málo, některé poměrně zásadní mezi nimi chybí. Jak uvidíme později, až si budeme ukazovat práci s XIBy, mimořádně vhodné by např. byla akce "Kdykoli se otvírá v editoru XIB, aktivuj panel 'Utilities'"; to ale – nakolik je mi alespoň známo – možné není.
Text Editing
Přeskočme panel "Fonts & Colors" – zde není celkem nic zajímavého, pokud ovšem netrváme např. na tom, abychom měli zelený zdrojový kód a fialové poznámky na černém pozadí – a podívejme se rovnou na služby panelu "Text Editing".
V panelu pro práci s textem nalezneme dvě záložky; prvá z nich se nazývá "Editing", druhá "Indentation" – je samozřejmě otázka, zda by nebylo lepší a přehlednější, kdyby každý z panelů měl vlastní ikonu, ale s tím celkem nic nenaděláme.
V prvé ze záložek můžeme vypnout automatické doplňování – to v Xcode 4 funguje poměrně dobře, ale je daleko agresivnější než tomu bývalo v Xcode 3, a bohužel nelze nastavit nějakou "polovičatou" variantu, platí buď všechno nebo nic. Je také příjemné, že lze vypnout "Balance brackets", čili doplňování levé závorky: ta služba by byla velmi příjemná, nebýt bohužel toho, že poměrně často doplní levou závorku jinam, než tam, kde ji opravdu potřebujeme:
Druhý panel – "Indentation" – je téměř totožný s nastaveními z Xcode 3; v podstatě v něm může vše zůstat ve standardním nastavení a nestojí za to si jej ani ukazovat.
Za zmínku možná stojí to, že je zde snad poněkud neintuitivně skryta volba pro automatické lámání nebo nelámání řádků ("Wrap lines"): já sice naprosto nedokáži pochopit, jak vůbec může někdo programovat bez automatického lámání, ale lidé jsou různé :)
Key Bindings
Panel Key Bindings, umožňující velmi pohodlně definovat a měnit význam nejrůznějších klávesových zkratek, ovšem také není žádnou novinkou – služba sama funguje už řadu let v libovolné korektně napsané aplikaci (ačkoli GUI pro ni obvykle schází), a panel sám byl k dispozici v Xcode 3 v prakticky totožné podobě.
Stojí ale za to si kombinace projít a povšimnout si, že řada se jich změnila (např. přepínání mezi implementací a hlavičkovým souborem, "odjakživa" alt-command-šipka nahoru, se nyní jmenuje "Jump to Next Counterpart", a namísto altu je jeho součástí přepínač ctrl (ve skutečnosti jde o službu nepatrně odlišnou, ale většinou si toho v praxi ani nevšimneme).
Documentation
V dokumentačním panelu se můžeme přihlásit k balíkům dokumentace, poskytovaným webovými servery – takovou dokumentaci samozřejmě nabízí Apple, a v principu ji mohou nabízet i třetí firmy, ačkoli v současnosti nevím, zda existuje praktický příklad.
V dolní části okna lze otevřít panel, který zobrazí detailní informace o zvoleném dokumentačním balíku:
Pokusíme-li se srovnávat dokumentaci v Xcode s informacemi na Webu, zjistíme, že dokumentace v Xcode je většinou poněkud starší. To je v současnosti normální: firma Apple relativně nedávno zrychlila vydávání dokumentačních novinek na Webu, ale jejich zpracování pro updaty z Xcode frekvenci nezměnilo – ta zůstává na původním stavu, velmi přibližně jednou měsíčně.
Ostatní...
... panely můžeme s klidným svědomím přeskočit.
Zatímco v Xcode 3 bylo poměrně důležité pro pohodlnou práci změnit standardní mechanismus ukládání mezivýsledků překladu (a podobných věcí), v Xcode 4 je naopak rozumný způsob standardem – přec jen se firma Apple v lecčems za tu dobu poučila :) – a měnit jej proto nemá smysl. Panel "Locations" nás proto zajímat nebude (i to málo, co by v něm mohlo stát za zmínku – totiž konkrétní umístění sestavených aplikací apod. –, nalezneme v okně "Organizer", a až si je budeme popisovat, ukážeme si detaily).
Význam panelu "Source Trees" zůstal přesně stejný, jako tomu bylo v Xcode 3 – lze zde definovat pojmenované symbolické kořeny, od nichž se pak v projektech může odvíjet umístění referovaných objektů. Pokud běžně přenášíme projekty s řadou složitých vzájemných vazeb mezi počítači, na nichž je velmi odlišná struktura složek, může se to hodit; většinou ale tato služba prostě nestojí za to.
Konečně pak ti, kdo zpracovávají projekty takového rozsahu, aby se jim vyplatilo používat distribuovaný build – k jehož nastavení slouží poslední z panelů – budou jistě vědět co a jak i bez nápovědy :)
Příště se vrátíme k hlavnímu oknu a konečně otevřeme nějaký projekt – a na něm si ukážeme, jak konkrétně práce v Xcode 4 vypadá.
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