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:
Informace
Kakao v Leopardu
8. listopadu 2007, 10.00 | Po pauze se opět vracíme s dalšími díly seriálu, který se věnuje programování v prostředí Cocoa operačního systému Mac OS X: Leopard je mezi námi, takže je na čase se podívat na to, co nového přinesl programátorům.
Po pauze se opět vracíme s dalšími díly seriálu, který se věnuje programování v prostředí Cocoa operačního systému Mac OS X: Leopard je mezi námi, takže je na čase se podívat na to, co přinesl nového programátorům.
Ačkoli mezi novinkami snad nejsou tak zásadní balíky, jako byla Core Data v době Tygra – mimochodem, dle mých zkušeností jedno z nejošklivějších zklamání: Core Data jsou skvěle navržena, leč prachmizerně implementována, a obsahují řadu velmi nepříjemných chyb a problémů. Bohužel, jak se zdá, Leopard tuto tradici dodržel (vůbec mám v poslední době nepříjemný dojem, že čím více úsilí Apple vkládá do všelijakých iPhonů a iPodů, tím méně času zbývá na software) –. Nových věcí je dost a dost na to, aby nám vystačily na několik zajímavých dílů.
Objective C 2.0
Už před časem jsme psali, že po dlouhých letech, kdy nebylo zapotřebí do jazyka Objective C nikterak zasahovat, se firma Apple rozhodla jazyk rozšířit a vylepšit doplněním nových služeb.
Ukážeme si je samozřejmě podrobně i s jejich výhodami a nevýhodami: ti, kdo měli až dosud hrůzu z paradigmatu retain/release, jistě potěší, že Objective C nyní podporuje plně automatický garbage collector. Přitom původní systém správy paměti je stále k dispozici a každý proces si může vybrat to, co jeho programátorovi lépe vyhovovalo: pohodlnější GC, nebo efektivnější retain/release.
64 je dvakrát tolik než 32
Ani o podpoře 64bitového režimu práce jsme se před časem nezapomněli zmínit; tehdy ovšem operační systém obsahoval knihovny a další podporu jen v omezené míře, pouze pro "obyčejné programy" – runtime Objective C a naše Kakao měly smůlu.
Leopard to změnil: od nynějška je k dispozici plně 64bitový režim práce i v Objective C a pro všechny standardní knihovny Apple; změny a nové možnosti, jež to přineslo, nám rozhodně vystačí na samostatný článek.
Nové třídy, nové služby...
Foundation a AppKit ovšem nezůstaly pozadu, a nabízejí řadu nových tříd – a nových služeb ve třídách starých. Obě knihovny samozřejmě nyní plně podporují výše zmíněnou práci ve čtyřiašedesátibitovém režimu; kromě toho máme k dispozici řadu dalších novinek.
Ve Foundation Kitu kupříkladu nalezneme třídy NSOperation a NSOperationQueue, jež pro jednoduché případy nabízejí pohodlnou možnost rozdělení práce do více samostatných vláken, aniž by se programátor musel vůbec něčím takovým zabývat.
AppKit pak nabízí paletu nových možností, zahrnujících kupříkladu předpřipravený editor predikátů, výrazně rozšířený (a snad i opravený) NSTreeController – a že toho měl zapotřebí! –, nové API pro dynamické animace obecných "views" založené na Core Animation, a předlouhou řadu dalších novinek, z nichž si ukážeme alespoň ty nejdůležitější.
... a celé nové knihovny
Novinkou je již zmíněná knihovna Core Animation, jež nabízí možnost velmi pohodlných animací viditelných objektů. Mám sice trochu obavu, zda tyto možnosti nebudou zneužívány pro "pouťově" vypadající aplikace, ale v základu jde o služby velmi rozumné – umožňují snadno zajistit takové věci, že např. uzavření panelu neproběhne skokem, ale dynamicky apod.
Framework Image Kit nabízí řadu služeb pro pohodlnou práci s obrázky, jejich zobrazování i základní úpravy: do jisté míry by se dalo říci, že libovolná aplikace má nyní k dispozici tytéž možnosti jako iPhoto :)
Další zajímavou knihovnou je Calendar Store, jež nabízí přístup k "databázi" tvořící základ kalendáře, jehož uživatelským rozhraním je aplikace iCal; nyní tedy kterákoli aplikace může snadno pracovat s kalendářovými záznamy (podobně, jako již dávno má k dispozici pohodlný framework pro práci s údaji z adresáře).
Velmi zajímavě vypadá Scripting Bridge: tento framework slibuje přímou a nativní podporu pro spolupráci mezi aplikacemi – tedy zhruba to, co nikdy nedokázal pořádně zajistit nenativní a syntakticky poněkud šílený AppleScript. Doufejme jen, že byl nad novou knihovnu přepsán také Automator, a že konečně funguje pořádně!
Ačkoli bohužel nejde o objektový framework, stojí za alespoň stručnou zmínku knihovna FSEvent, jež se stará o předávání notifikací o změnách v systému souborů.
K novým možnostem jsou i nové nástroje
Podobně jako Tygr přišel s Xcode 2, přináší Leopard další velkou versi standardního vývojového prostředí Apple, Xcode 3. Konečně již jde o změnu pouze evoluční a nikoli revoluční – zdá se, že po letech a až příliš mnoha pokusech a slepých uličkách mají konečně u Apple základy vývojového prostředí rozumné a dále na nich staví.
Nové Xcode sice na první pohled vypadá velmi podobně jako "dvojka", přináší však řadu velmi zajímavých novinek, usnadňujících práci a zjednodušujících vývojový cyklus. Rozhodně sem patří např. Research Assistant – velmi šikovné okénko, jež neustále zobrazuje aktuální informace o symbolu, na němž je právě kurzor. Hodně času ušetří i "mini debugger" – plovoucí okénko, jež umožňuje vyvolávat základní služby debuggeru nad libovolnou aplikací, spuštěnou z Xcode, aniž by bylo zapotřebí přepínat do debuggeru. Jakkoli zvýrazňování úrovně vnoření samo působí lehce pouťovým dojmem:
– a to obrázek ani nezachytil, že bíle vyznačená oblast krátce zapulsuje! –, možnost skrývat bloky zdrojového textu, jež je s ním spojena (a jež tak mimochodem po patnácti letech vrátila zpět samozřejmost Editu z NeXTStepu!) je hodně praktická.
Ti, kdo i přes výše zmíněné chyby a problémy využívají knihovnu Core Data, jistě uvítají bohatou podporu tzv. "mapovacích modelů", umožňujících v grafickém prostředí specifikovat postup přechodu od starší verse dat k nové –. Tedy něco, co až dosud bylo nutno velmi pracně programovat.
A aby bylo novinek více, nové Xcode vedle Objective C podporuje také interpretované jazyky Ruby a Python.
Ubicumque dulce est, ibi et acidum invenies: bohužel z Xcode zcela zmizely podpůrné prostředky pro programování ve WebObjects – především nenahraditelný WOBuilder. Ne že by se firma Apple vzdávala WebObjects, právě naopak – součástí Xcode 3 je nová, podstatně rozšířená verse WebObjects 5.4 (mezi její novinky patří kupříkladu nový formát templates, spojující .html i .wod do společného souboru, a řada dalších). Vývojovým prostředím pro WebObjects však nadále nemá být Xcode, nýbrž otevřený javský systém Eclipse s pluginem WOLips. Jakkoli není sporu o tom, že Eclipse jako systém zaměřený a specializovaný na vývoj v Javě dokáže nabídnou daleko lepší služby (ten, kdo někdy zkusil v rámci Xcode spustit javu pod debuggerem ví, co mám na mysli), vůbec z toho nemám radost: mnohem lépe mi vyhovovalo využívat jedno společné IDE pro všechny projekty.
Ostatně stran Javy – zdá se, že u Apple konečně pochopili to, co bylo komukoli, kdo v té věci kdy zkusil programovat, jasné od prvního pohledu: jedná se o kombinaci ďábelské rychlosti Smalltalku s jemnou elegancí C++, a nejenže Java není beznadějně s to konkurovat vývojovému systému založenému na Objective C, ale začíná být zřejmé, že lze lépe a efektivněji vyvíjet i ve výše zmíněných skriptech jako Ruby či Python. Apple tedy tuto slepou uličku zvolna opouští: Java Bridge již není nadále podporován, a sama Java dostává právě takovou pozornost, jakou si zaslouží, to jest mizivou :)
K novému Xcode je také nový Interface Builder; tentokrát jde o změnu revoluční – aplikace je napsána od základu znovu, nabízí přepracované GUI a mnohem lepší integraci s Xcode. Na nový Interface Builder se samozřejmě podíváme velmi podrobně.
Naopak jen velmi stručně se podíváme na aplikaci Dashcode, určenou pro sestavování "widgetů" pro dashboard; ušetřený čas věnujeme podrobnějšímu pohledu na nový univerzální prostředek pro hledání problémů s pamětí i výkonem (nebo čímkoli jiným) v aplikacích – novému programu Instruments.
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