spájame
slovenskú
IT komunitu
pridaj sa
Registrácia · Login

PS 12.8.2011
Hodnoť článok:
0 0

AppBlog.sk: Predstavujeme iOS framework - Three20

Ako tému pre môj ďalší blogpost som sa rozhodol, že vám trochu bližšie predstavím framework pre iOS devlopment Three20. Ide o opensource framework, napísaný v objective C, čiže tento článok bude skôr pre developerov, no určite bude zaujímať aj nedeveloperov, pretože v ňom boli vyvinuté rôzne známe aplikácie, ako napríklad Facebook.

V mojom predchádzajúcom článku som písal o tom, ako začať programovať pre iOS. Keďže je to už nejaká doba a všetci vieme programovať pre iOS, predstavíme si framework, ktorý nám prácu uľahčí. Týmto článkom by som vám chcel rovnako predstaviť aj môj blog http://www.appblog.sk, ktorý je venovaný hlavne recenziam na slovenské a české iOS aplikácie, programovanie, marketing, design a všetko okolo iOS a App Store.

Ako som už spomínal, Three20 je opensource objective C knižnica, ktorá nám uľahčuje prácu pri programovaní iOS aplikácií. Používa ju niekoľko známych aj menej známych aplikácií z App Storu, napríklad Facebook, Posterous, LinkedIn, Cookmate od českej firmy Tapmates a v neposlednom rade ju používam aj ja. Poskytuje mnoho užitočných kontrolerov ako napríklad launcher - simuluje springboard (menu vo Facebook aplikácii), prehliadač fotiek, jednoduchší štýl pracovania s tabuľkami a pod. Ďalšimi zaujímavými výhodami sú napríklad zachovanie presistencie pomocou TTNavigatora, výborný systému URL requestov a ich cachovania a ďalšie.

Trochu histórie

Pôvodné Three20 naprogramoval a sprístupnil ako opensource Joe Hewitt už v Marci 2009, autor pôvodnej Facebook aplikácie. Joe pracoval napríklad aj na FireBug pre Firefox alebo aj na samotnom Firefoxe. Ako Joe píše na svojom blogu, Three20 vzniklol počas práce na Facebook aplikácii. Názov Three20 pochádza z šírky obrazovky iPhonu, ktorá má 320 bodov, z toho three-20. Joe opustil Facebook a venuje sa svojim projektom, najnovšie pracuje na projekte Scrollability - ide o javaskript, ktorý umožňuje prirodzené smooth scrollovanie vo webkite rovnako ako pri tabuľkách v UIKite. Postupne sa okolo Three20 vytvorila komunita a Joa nahradil Jeff Verkoyen. Ten Three20 postupne prebudoval na modulárny systém, teda z jednej obrovskej knižnice spravil niekoľko menších, kde si každý môže vyskladať len tie moduly, ktoré sa mu hodia.

"New open source projects are always exciting because you never know who is going to wander into your garden." Joe Hewitt

V nasledujúcej časti článku prestavím v stručnosti niekoľko základných komponentov, ktoré Three20 ponúka.

TTNavigator

Navigáciu v Three20 zabezpečuje modul TTNavigator. Ide o navigátor, ktorý je založený na URL linkách. Tu sa autori inšpirovali v Ruby On Rails, princíp funguje podobne. V app delegáte sa do URL mapy načítajú všetky linky, ktoré su previazané na nejaký view kontroler. Napríklad si predstavme kontroler, ktorý zobrazuje zoznam priateľov, ďalší vnorený je detail priateľa. URL mapa by potom vyzerala napríklad

app://friends
app://friends/detail

Výhodou TTNavigatora je jednoduchá a konzistentná navigácia naprieč celou aplikáciou a hlavne zachovanie perzistencie. To znamená, že aplikácia sa po vypnutí aj zapnutí spustí na rovnakom mieste. To bol aj pôvodný zámer TTNavigatora. S nástupom multitaskingu už však máme akú-takú perzistenciu zadarmo, čiže využitie perzistencie je tu otázne. No stále môže nastať stav, že aplikácia spadne, alebo ju systém vypne keď je na pozadí, pripadne môže užívateľ vypnúť telefón. Faktom však ostáva, že na efektívne využitie perzistencie treba programovať aplikáciu štýlom, kde každý kontroler potrebuje iba URL linku aby sa dokázal dostať do stavu v akom bol aj z perzistencie, čo je častokrát dosť obtiažne. Rovnako je nepohodlné posielanie rôznych objektov medzi kontrolermi. Rieši sa to cez špeciálnu inicializačnú metódu, v ktorej sa cez NSDictionary predávajú potrebné objekty. No nejak som tomu neprišiel na chuť. V poslednej dobe som TTNavigator prestal používať a používam štandardný spôsob. Viac o TTNavigatore a prezistencii je viac na URL-based navigation.

TTLauncher

Launcher je šikovná vec. Simuluje totiž springboard, a tak poskytuje funkcionalitu podobnú na akú sme zvyknutí pri manipulovaní s ikonami, či s obrazovkami na iPhone. Ikony môžeme ľubovolne zoraďovať, mazať, pridávať alebo presúvať medzi obrazovkami. Facebook používa TTLauncher ako hlavnú obrazovku, z ktorej sa dostaneme na jednotlivé aplikácie ako fotky, či zoznam priateľov.

TTPhotoViewController

Jedna pre mňa nepochopiteľná vec je, že Apple doteraz nevydal žiadne verejné API, ktoré by mohli developeri použiť na jednoduchšiu prácu s fotkami. Jediné čo je k dispozícii bol Image Picker. TTPhotoViewController vo svojej podstate simuluje image picker s tým rozdielom, že ako zdroj obrázkov je nie len stream z albums alebo camera roll, ale aj svoj vlastný. Použitie je relatívne jednoduché, stačí vytvoriť datasource, ktorý obsahuje URL linky na fotky a kontroler ich zobrazí rovnako ako pôvodná Photos aplikácia. Nevýhodou je, že neposkytuje moc veľa možností na kustomizáciu, preto treba všetky úpravy robiť ručne.

TTTableViewController

Spôsob práce s tabuľkami je podľa mňa ešte lepší ako ten pôvodný od Apple. O to viac, keď ide o dáta z internetu. Tabuľka má podobne ako pri klasickom prístupe svoj datasource. Na zobrazovanie jednotlivých buniek tabuľky sa používajú dva komponenty. Jeden je item a jeden je cell. Item drží dáta a cell ich zobrazí. Datasource potom v jednej metóde nastaví pole items a v druhej metóde iba povie, pre ktorý item má tabuľka vykresliť prisúchajúci cell. Datasource získa dáta ľubovolným spôsobom, pri sieťových aplikáciach hlavne pomocou vstavaného modelu. URLRequesty, TTTableViewController a TTPhotoViewController považujem za najlepšie funkcie, ktoré Three20 ponúka.

Nevýhody Three20

Three20 má veľmi veľa vecí, ktoré nám uľahčia a zefektívnia prácu. Na druhej strane k dosiahnutiu tejto nirvány vedie cesta veľmi dlhá a častokrát aj plná bolesti. A dôvod je na to priam až prozaický - neexistuje takmer žiadna dokumentácia. Na webe je niekoľko článkov, ktoré vysvetľujú niektoré základné veci, ale je to dosť nedostatočné. K dispozícii je iba niekoľko sample aplikácií, ktoré demonštrujú Three20 v akcii, ako napríklad TTCatalog. TTCatalog nájdete priamo v zdojových kódoch. Ide o obdobu UICatalog od Apple, kde je v prehľadnej aplikácií ukázané ako sa jednotlivé komponenty používajú.

Ďalšia negatívna vec je, že knižnica je stavaná na iOS 3, čo je už nejaký ten piatok. Je síce pekné, že by vaše aplikácie podporovali 3.x OS, ale to je už v tejto dobe nezmysel http://www.cocoanetics.com/2011/08/ios-versions-in-the-wild/. Niekde som čítal, že aj sám Apple vyzýva, aby developeri prestali podporovať 3.x verzie.

Častokrát som si išiel aj vlasy vytrhať, keď som sa snažil prelinkovať Three20 do Xcode projektu. Pôvodne to vyžadovalo relatívne jednoduchý postup, no v skutočnosti to skoro nikdy nefungovalo a musel som hodiny stráviť riešením takýchto linkovacích problémov. Ďalšie problémy boli pri migrácii starých projektov na nový modulárny systém a rovnako aj na Xcode 4. Našaťastie, pridávanie Three20 do projektov je teraz triviálne jednoduché, slúži na to jednoduchý python skript, kde v termináli zadáte niekoľko príkazov a skript sa postará o všetko ostatné.

Poslednou nevýhodou Three20 je, že knižnica je už len v stave opravovania chýb a žiadne nové komponenty sa pravdepodobne nebudú pridávať. Niet sa čomu čudovať, po 3 rokoch práce, odviedli fenomenálny kus práce, ale tá ťarbavosť, ktorou sa Three20 vyznačuje, ju odsúdila na zánik. Podobne ako staroveký Rím sa rozpadol pod svojou ťarchou, čaká to aj Three20.

Nimbus

Pod týmto pojmom sa skrývajú moje veľké očakávania. Všetky negatíva, ktoré som doteraz na Three20 naložil, bude riešiť nový projekt Jeffa Verkoyena - Nimbus. Ako hovorí sám Jeff, je to projekt len tak veľký, ako je jeho dokumentácia. Funkcionalita je až na druhom mieste. Navyše, Nimbus bude založený na Three20 a zoberie si z neho len to najlepšie a poučí sa z jeho chýb. Ako projekt Nimbus rastie môžete priebežne sledovať tu http://jverkoey.github.com/nimbus/index.html.

Napriek tomu, že z tohoto článku, hlavne z jeho druhej polovice, by sa mohli zdať, že Three20 moc neodporúčam, faktom je, že stále poskytuje ohromnú funkcionalitu a inšpiráciu a tvorí najväčší iOS framework, ktorý je momentálne k dispozícii pre iOS (alebo aspoň o ktorom viem). Ozaj a spomenul som, že Three20 nepodporuje Interface Builder?

Tento článok je pôvodne zverejnený na http://www.appblog.sk

niekoľko užitočných liniek na záver:

PS PS


Hodnoť článok:
0 0

1 komentár k článku:

Komentovať môžu iba prihlásení

Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)

Prihlás sa tu, ak už máš profil na Zajtra.sk:


Zabudol som heslo

0 0 Andy Butkaj 19.8.2011 19:21:13
Peter, vynikajuci clanok, hodnotne info a plno materialu na studovanie. ;) S tym linkovanim som mal problem i ja a niekedy sa to vyriesilo samo, len skusanim rovnakeho postupu znovu. O nimbuse som nemal tusenia, tesim sa nan i ja :) Uz si Nimbus framework pouzil v nejakej svojej app?
Zajtra.sk > Programovanie > iOS > AppBlog.sk: Predstavujeme iOS framework - Three20


Kritika

Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!

Reklama

Seriály zo Zajtra.sk

Reklama