Sviluppare app native per iOSGaspare Novara
MESSINA - 12/07/2014
Prerequisiti
Che serve per iniziare?
Sistema Operativo: OS X Mavericks
Software: Xcode 5.1.1 (con iOS SDK 7 incluso)
Know-how: Objective C (base)
Un database SQlite chiamato contatti.sqlite con questa tabella: CREATE TABLE contact (nome TEXT, cognome TEXT, cellulare TEXT)
IDE di sviluppo Xcode 5.1.1
Primi passi in Xcode
Primi passi in Xcode
I Template
Master-Detail Application: genera unapplicazione composta da una tabella, una barra di navigazione e una vista di dettaglio.
Page-Based Application, fornisce una struttura a pagine, come una sorta di libro, sfogliabile scorrendo il dito da destra verso sinistra.
Single View Application, fornisce unapplicazione vuota, senza nessuna implemen- tazione particolare.
Tabbed Application, fornisce unapplicazione con la tab bar, ovvero la barra nera composta da pi sezioni (ad esempio quella che trovate nellapplicazione nativa Musica).
Empty Application, fornisce solo un delegato per la nostra applicazione, senza nessun elemento grafico. destinato agli utenti pi esperti, che vogliono creare la loro struttura personalizzata.
App Template
Che App Svilupperemo?
Struttura App di base
Model: Contact di tipo NSObject
DAO: classDatabase di tipo NSObject
Controller:* ListaViewController di tipo UiViewController* DetailViewController di tipo UiViewController* AddViewController di tipo UiViewController
Framework di supporto: libsqlite3.0.dylib
AppDelegate.h
NOTA: In Objective C tutti gli oggetti sono riferiti tramite puntatori.
Parentesi: Property
Le property sono metodi accessori, permettono di definire metodi per accedere indirettamente alle variabili di istanza che essendo private non possono essere viste dallesterno della classe in cui sono implementate. Questo meccanismo permette di rispettare lincapsulamento 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: loggetto che utilizza la property ne detiene la propriet.weak: loggetto che utilizza la property non ne detiene la propriet.copy: assegna una copia delloggetto alla property.assign: indica che il metodo set user semplicemente un assegnamento. Si usa principalmente per attributi scalari come per esempio int e floatretain: loggetto viene trattenuto in memoria al momento dellassegnazione.
Atomicit:nonatomic: la property viene trattata in modo non atomico quando vengono utilizzate tecniche di sincronizzazione.
AppDelegate.m
self.window.rootViewController =
Il Model
Contact.h
Contact.m
Con il costrutto @synthesize andremo a creare, realmente, questi metodi seguendo le specifiche dichiarate nelle property.
La Classe DAO
classDatabase.h
La 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 DAO
classDatabase.m
getContacts
* Lasterisco (*) viene chiamato operatore di indirezione o deferenziazione e restituisce il contenuto delloggetto puntato dal puntatore;
* Loperatore e commerciale (&) restituisce lindirizzo della variabile
La Classe DAO
deleteContact
classDatabase.m
La Classe DAO
insertContact
classDatabase.m
ListaViewController
ListaViewController.h
ListaViewController
ListaViewController.m
ListaViewController
Funzionalit di cancellazione
ListaViewController.m
ListaViewController
ListaViewController.xib
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.h
AddViewController
AddViewController.m
AddViewController
AddViewController.m
ListaViewController AddViewController
#import ListaViewController.h
DetailViewController
DetailViewController.h
DetailViewController
DetailViewController.m
DetailViewController
DetailViewController.xib
ListaViewController DetailViewController
#import "DetailViewController.h"
Build & Run
Gaspare Novara
https://twitter.com/gaspare_novara
https://www.linkedin.com/in/gasparenovara
https://www.facebook.com/gaspare.novara
https://plus.google.com/101699312037605671054
GRAZIE!
https://twitter.com/StrettoDigitale - #glsd
Top Related