sviluppare app native per ios

Download Sviluppare app native per iOS

If you can't read please download the document

Upload: gaspare-novara

Post on 16-Apr-2017

420 views

Category:

Software


0 download

TRANSCRIPT

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