SlideShare a Scribd company logo
1 of 33
Sviluppare app native perSviluppare app native per
iOSiOS
Gaspar e Novar aGaspar e Novar a
MESSINAMESSINA - 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 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)
IDE di sviluppo Xcode 5.1.1IDE di sviluppo Xcode 5.1.1
Primi passi in XcodePrimi passi in Xcode
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.
App TemplateApp Template
Che App Svilupperemo?Che App Svilupperemo?
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
AppDelegate.hAppDelegate.h
NOTA: In Objective C tutti gli oggetti sono riferiti tramite puntatori.
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.
AppDelegate.mAppDelegate.m
self.window.rootViewController =
Il ModelIl 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 DAO classDatabase.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 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
La Classe DAOLa Classe DAO
deleteContact
classDatabase.m
La Classe DAOLa Classe DAO
insertContact
classDatabase.m
ListaViewControllerListaViewController ListaViewControllerListaViewController.h.h
ListaViewControllerListaViewController ListaViewControllerListaViewController.m.m
ListaViewControllerListaViewController
Funzionalità 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;
AddViewControllerAddViewController AddViewController.h
AddViewControllerAddViewController AddViewController.m
AddViewControllerAddViewController 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

More Related Content

Similar to Sviluppare app native per iOS

Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIvan Gualandri
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven DesignAndrea Saltarello
 
Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Ivan Gualandri
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Todi Appy Days
 
Repository pattern slides v1.1
Repository pattern slides v1.1Repository pattern slides v1.1
Repository pattern slides v1.1Christian Nastasi
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introductionspawn150
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Non solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsNon solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsGoran Djukic
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.jsMichele Capra
 

Similar to Sviluppare app native per iOS (20)

Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulug
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
Programming iOS lezione 1
Programming iOS lezione 1Programming iOS lezione 1
Programming iOS lezione 1
 
Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
beContent
beContentbeContent
beContent
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015
 
Repository pattern slides v1.1
Repository pattern slides v1.1Repository pattern slides v1.1
Repository pattern slides v1.1
 
Spring Intro
Spring IntroSpring Intro
Spring Intro
 
VS Package @ CD2008
VS Package @ CD2008VS Package @ CD2008
VS Package @ CD2008
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
Non solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsNon solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, apps
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 

Sviluppare app native per iOS