iPhone 101: Přehled tutoriálu a návrhové vzory
Tato kapitola obsahuje přehled o aplikaci kterou budete vytvářet a o návrhových vzorech které budete používat.
Přehled tutoriálu
V tomto tutorilu si vytvoříte velmi jednoduchou aplikaci. Bude mít textové pole, popisek a tlačítko. Do textového pole můžete napsat vaše jméno a po zmáčknutí tlačítka se v popisku objeví "Hello, <jméno>!:
I když je to velmi jednoduchá aplikace, objevují se v ní základní návrhové vzory, nástroje a techniky které jsou potřebné pro vývoj na iPhone pomocí Cocoa Touch. Cocoa Touch se skládá z knihoven UIKit a Foundation, které poskytují základní nástroje a infrastrukturu která je potřebná k implementaci grafických, událostmi řízených aplikací v iPhone OS. Zahrnuje také mnoho dalších knihoven které poskytují klíčové služby zařízení, jako je seznam kontaktů. O Cocoa Touch a jak zapadá do iPhone OS se můžete dozvědět více v iPhone OS Technology Overview. Hlavní návrhové vzory které budete používat jsou popsány v Design Patteerns.
V tomto tutoriálu se příliš nedbá na vzhled uživatelského rozhraní. Nicméně, vzhled je velmi důležitým prvkem úspěšné aplikace pro iPhone. Měli byste si tedy přečíst iPhone Humane Interface Guidelines a prozkoumat ukázkový kód založený na tomto tutoriálu (HelloWorldClassic), abyste tak porozumněli jak vylepšit stávající uživatelské rozhraní.
Také se vám začne dostávat porozumnění jak fungují kontrolery pohledu a jak zapadají do architektury aplikace pro iPhone.
Návrhové vzory
Pokud jste je doposud nečetli, měli byste si přečíst kapitolu o návrhových vzorech v Cocoa Fundamentals Guide, ale nejdůležitější z nich které budete používat jsou tyto:
- Delegation (Delegace)
- Model View Controller (MVC)
- Target-Action (Cíl-Akce)
Níže je krátké shrnutí těchto vzorů a zmínka o tom kde budou použity v aplikaci.
Delegation (Delegace)
Delegace je vzor kdy jeden objekt může poslat zprávu jinému objektu - specifikovanému jako jeho delegát - a zeptat se ho na radu, nebo mu jednoduše oznámt nějakou událost. Používá se jako alternativa k dědičnosti tříd a slouží k rozšíření funkcionality znovupoužitelných objektů.
V této aplikaci sdělí objekt aplikace delgátovi že hlavní startovací rutiny jsou skončeny a že může začít vlastní konfigurace. Je vhodné aby delegát vytvořil instanci kontroleru, který nastaví a ovládá pohled. Textové pole navíc sdělí svému delegátu (kterým je v tomto příadě ten stejný kontroler) kdy uživatel stisknul klávesu Return.
Metody delegáta jsou obvykle seskupeny pohromadě v protokolu. Protokol je v podstatě jen seznam metod. Pokud třída vyhovuje protokolu, garantuje tím že implementuje požadované (některé mohou být volitelné) metody protokolu. Protokol delegáta specifikuje všechny zprávy které může objekt zaslat svému delegátu. Více se o delegátech a jejich roli v Objective-C můžete dozvědět v kapitole Protocols v The Objective-C 2.0 Programming Language.
Model-View-Controller (MVC)
Návrhový vzor Model-View-Controller (nebo "MVC") definuje tři role pro objekty aplikace.
Model (model) tento objekt představuje data jako třeba SpaceShips nebo Rockets ve hře, položky ToDo a Contacts v kancelářské aplikaci nebo Circles a Squares v aplikaci pro kreslení.
V této aplikaci bude málo dat - jen řetězec - který vlastně ani nepoužijete mimo jedinou definovanou metodu, takže striktně vzato není ani potřeba. Jde jen o princip, ten je důležitý. V ostatních aplikacích může být model komplikovanější a lze k němu přistupovat z více částí kódu.
View (pohled) tyto objekty ví jak zobrazit data a mohou dovolit uživateli data měnit.
V této aplikaci poyřebujete mít hlavní pohled který obsahuje další - textové pole které získává informace od uživatele, druhé textové pole k zobrazení textu v závislosti na vstupu od uživatele a tlačítko které uživateli umožní sdělit druhému textovému poli že se má aktualizovat.
Controller (kontroler) tento objekt je prostředník mezi modely a pohledy.
V této aplikaci převezme objekt kontroleru data ze vstupu v textovém poli, uloží je do řetězce a aktualizujte odpovídajícím způsobem druhé textové pole. Aktualizace se provede jako důsledek akce zaslané tlačítkem.
Target-Action (Cíl-Akce)
Mechanismus target-action umožňuje ovládáacímu objektu - to jest, objektu jako je tlačítko nebo posuvník - poslat zprávu (akce) jinému objektu (cíl), jako odpověď na událost od uživatele (kliknutí), který ji umí interpretovat a obslouužit tak jak aplikace očekává.
V této aplikaci tlačítko po dotknutí sdělí kontroleru aby aktualizoval jeho model a pohled v závislosti na vstupu od uživatele.