Come sviluppare app native per iOS a partire dal suo IDE di sviluppo Xcode per proseguire con un tutorial completo per realizzare una piccola rubrica di contatti.
1. Sviluppare app native perSviluppare app native per
iOSiOS
Gaspar e Novar aGaspar e Novar a
MESSINAMESSINA - 12- 12/07/2014/07/2014
2. PrerequisitiPrerequisiti
Che serve per iniziare?Che serve per iniziare?
Sistema Operativo:Sistema Operativo: OS X MavericksOS X Mavericks
Software: Xcode 5.1.1 (con iOS SDK 7 incluso)Software: Xcode 5.1.1 (con iOS SDK 7 incluso)
Know-how: Objective C (base)Know-how: Objective C (base)
Un database SQlite chiamato contatti.sqlite con questaUn database SQlite chiamato contatti.sqlite con questa
tabella: CREATE TABLE contact (nome TEXT, cognome TEXT,tabella: CREATE TABLE contact (nome TEXT, cognome TEXT,
cellulare TEXT)cellulare TEXT)
5. Primi passi in XcodePrimi passi in Xcode
I TemplateI Template
Master-Detail Application:Master-Detail Application: genera un’applicazione composta da unagenera un’applicazione composta da una
tabella, una barra di navigazione e una vista di dettaglio.tabella, una barra di navigazione e una vista di dettaglio.
Page-Based ApplicationPage-Based Application, fornisce una struttura “a pagine”, come una, fornisce una struttura “a pagine”, come una
sorta di libro, sfogliabile scorrendo il dito da destra verso sinistra.sorta di libro, sfogliabile scorrendo il dito da destra verso sinistra.
Single View ApplicationSingle View Application, fornisce un’applicazione vuota, senza, fornisce un’applicazione vuota, senza
nessuna implemen- tazione particolare.nessuna implemen- tazione particolare.
Tabbed ApplicationTabbed Application, fornisce un’applicazione con la “tab bar”, ovvero, fornisce un’applicazione con la “tab bar”, ovvero
la barra nera composta da più sezioni (ad esempio quella chela barra nera composta da più sezioni (ad esempio quella che
trovate nell’applicazione nativa “Musica”).trovate nell’applicazione nativa “Musica”).
Empty ApplicationEmpty Application, fornisce solo un delegato per la nostra, fornisce solo un delegato per la nostra
applicazione, senza nessun elemento grafico. È destinato agli utentiapplicazione, senza nessun elemento grafico. È destinato agli utenti
più esperti, che vogliono creare la loro struttura personalizzata.più esperti, che vogliono creare la loro struttura personalizzata.
8. Struttura App di baseStruttura App di base
Model: Contact di tipo NSObjectModel: Contact di tipo NSObject
DAO: classDatabase di tipo NSObjectDAO: classDatabase di tipo NSObject
Controller:Controller:
* ListaViewController di tipo UiViewController* ListaViewController di tipo UiViewController
* DetailViewController di tipo UiViewController* DetailViewController di tipo UiViewController
* AddViewController di tipo UiViewController* AddViewController di tipo UiViewController
Framework di supporto: libsqlite3.0.dylibFramework di supporto: libsqlite3.0.dylib
10. Parentesi: PropertyParentesi: Property
Le property sono metodi accessori, permettono di definire metodi per accedere indirettamente alle variabili di istanza che
essendo private non possono essere viste dall’esterno della classe in cui sono implementate. Questo meccanismo permette di
rispettare l’incapsulamento della programmazione orientata agli oggetti.
Per il metodo getter si usa getNomeIstanza;
Per il metodo setter si usa setNomeIstanza;
Attributi
Scrittura/lettura:
readwrite: indica che è richiesto sia il metodo get che il metodo set dell'attributo.
Readonly: indica che è richiesto solo il metodo get del'attributo
Assegnazione:
strong: l’oggetto che utilizza la property ne detiene la proprietà.
weak: l’oggetto che utilizza la property non ne detiene la proprietà.
copy: assegna una copia dell’oggetto alla property.
assign: indica che il metodo set userà semplicemente un assegnamento. Si usa principalmente per attributi scalari
come per esempio int e float
retain: l’oggetto viene trattenuto in memoria al momento dell’assegnazione.
Atomicità:
nonatomic: la property viene trattata in modo non atomico quando vengono utilizzate tecniche di
sincronizzazione.
14. La Classe DAOLa Classe DAO classDatabase.m
void = "a reference to some random chunk of memory with untyped/unknown contents" (es: definizione di metodi
che non ritornano alcun valore)
id = "a reference to some random Objective-C object of unknown class" (es: init,sender,initWithNibName)
15. La Classe DAOLa Classe DAO classDatabase.m
getContacts
* L’asterisco (*) viene chiamato operatore di indirezione o deferenziazione e restituisce il
contenuto dell’oggetto puntato dal puntatore;
* L’operatore “e commerciale” (&) restituisce l’indirizzo della variabile