sviluppare apps native per ios - lo stretto digitale
Post on 05-Jul-2015
177 Views
Preview:
DESCRIPTION
TRANSCRIPT
Sviluppare app native per Sviluppare app native per iOSiOS
Gaspar e Novar aGaspar e Novar a
MESSINA MESSINA - 12- 12/07/2014/07/2014
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 questa Un 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)
IDE di sviluppo Xcode 5.1.1IDE di sviluppo Xcode 5.1.1
P r i m i p a s s i i n X c o d eP r i m i p a s s i i n X c o d e
P r i m i p a s s i i n X c o d eP r i m i p a s s i i n X c o d eI TemplateI Template
Master-Detail Application: Master-Detail Application: genera un’applicazione composta da una genera 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 che la 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 utenti applicazione, 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.
A p p T e m p l at eA p p T e m p l at e
Che App Svilupperemo?Che App Svilupperemo?
Struttura App di baseStruttura App di baseModel: 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
AppDelegate.hAppDelegate.h
NOTA: In Objective C tutti gli oggetti sono riferiti tramite puntatori.
Parentesi: PropertyParentesi: PropertyLe 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 floatretain: 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.
AppDelegate.mAppDelegate.m
self.window.rootViewController =
Il Model Il Model Contact.h
Contact.m
Con il costrutto @synthesize andremo a creare, realmente, questi metodi seguendo le specifiche dichiarate nelle property.
La Classe DAOLa Classe DAOclassDatabase.h
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)
La Classe DAOLa Classe DAOclassDatabase.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
La Classe DAOLa Classe DAOdeleteContact
classDatabase.m
La Classe DAOLa Classe DAOinsertContact
classDatabase.m
ListaViewControllerListaViewController ListaViewControllerListaViewController.h.h
ListaViewControllerListaViewController ListaViewControllerListaViewController.m.m
ListaViewControllerListaViewControllerFunzionalità di cancellazione
ListaViewControllerListaViewController.m.m
ListaViewControllerListaViewController ListaViewControllerListaViewController.xib.xib
ListaViewController AppDelegate→ListaViewController AppDelegate→
#import "ListaViewController.h"
@property (strong, nonatomic) ListaViewController *viewController;
AppDelegate.h
AppDelegate.m
self.viewController = [[ListaViewController alloc] initWithNibName:@"ListaViewController" bundle:nil]; UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];self.window.rootViewController = navController;
AddViewController AddViewController AddViewController.h
AddViewController AddViewController AddViewController.m
AddViewController AddViewController AddViewController.m
ListaViewController AddViewController →ListaViewController AddViewController →
#import “ListaViewController.h”
DetailViewControllerDetailViewController DetailViewController.h
DetailViewControllerDetailViewController DetailViewController.m
DetailViewControllerDetailViewController DetailViewController.xib
ListaViewController DetailViewController→ListaViewController DetailViewController→
#import "DetailViewController.h"
Build & RunBuild & Run
Gaspare NovaraGaspare Novara
https://twitter.com/gaspare_novarahttps://twitter.com/gaspare_novara
https://www.linkedin.com/in/gasparenovarahttps://www.linkedin.com/in/gasparenovara
https://www.facebook.com/gaspare.novara
https://plus.google.com/101699312037605671054
GRAZIEGRAZIE!! https://twitter.com/StrettoDigitalehttps://twitter.com/StrettoDigitale - #glsd - #glsd
top related