Upload
codemotion
View
1.078
Download
0
Embed Size (px)
DESCRIPTION
Rispetto solo a due anni fa oggi ci sono molte più possibilità di scelta per chi voglia scrivere un'applicazione iOS. La prima scelta da considerare è naturalmente quella suggerita da Apple che si basa su Objective-C e l'iOS SDK. Tuttavia Objective-C può essere un linguaggio ostico e allora ecco saltar fuori MonoTouch (che però è a pagamento) oppure PhoneGap oppure Titanium oppure Flash Builder e la lista continua. In questa sessione andiamo alla scoperta dei pro e contro delle varie opzioni.
Citation preview
Sviluppare per iOSAnalisi delle soluzioni
Dino Esposito & Francesco Esposito >>>> Crionet srl
@despos | @fesposi
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Prerequisiti
• Avere un Mac• Essere un Apple developer• Avere (a scelta) un iPhone/iPad/iPod Touch
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Come ti scrivo un’app
• Apple SDK e Objective-C• MonoTouch e C#• Soluzioni ibride
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Apple SDK: gli strumenti
• Xcode– Code editor + debugger + Interface Builder– Automatic Deployment
• AppCode di JetBrains
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Apple SDK: il linguaggio
• Objective-C: ANSI C + sintassi OO• Invia messaggi agli oggetti
– Passaggio parametri per nome
• Automatic Reference Counting solo in iOS5– Gestione della memoria esplicita
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
NSString *message = @"Login failed";UserAccount *account = [[UserAccount alloc] init];[account loginWithOptions:TRUE throwOnError:TRUE message:message];[account release]account = nil;
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Apple SDK: il framework
• Cocoa Touch• Set di classi (header+impl) per varie funzioni
– Networking– Dialoghi– Persistenza
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Apple SDK: complessivamente
• Linguaggio non particolarmente evoluto• Buon supporto dall’IDE
– Debugger– Deployment
• Larga parte di 500K apps scritte con Obj-C
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
MonoTouch: cos’è
• iOS apps su Mac usando C#– Mix con Obj-C e codice portato da .NET
• MonoDevelop come editor di codice– Xcode come editor grafico
• Ha un fratello per Android• 300 euri
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
MonoTouch: come funziona
Mono
Mono BCL
CocoaTouchThreading | Interop | GC
JIT-compiler e AOT
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
MonoTouch: che fa
• Stesso app-model di Obj-C– Eventi, proprietà, logica– UIWindow, ViewController, AppDelegate
• Classi equivalenti a Silverlight 4
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
DEMO
13
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
MonoTouch: pro/contro
• Facile per chi viene da C# o Java– E per chi viene da C++?
• Riusabilità del codice– Sì, ma ...
• Nessuna barriera da Apple
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
MonoTouch: pro/contro
• Dimensione del package– In realtà non un grande problema per iOS
• Velocità– Sì, ma ...
• Li spendo ‘sti 300 euri o no?
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Ibridi : chi sono?
• Titanium Mobile– Framework in JavaScript (interpretata nativamente)
• PhoneGap– HTML5 + CSS + JavaScript (web-view)
• Flash Builder – actionScript (interpretata nativamente)
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Due parole su PhoneGap
• Non male per iOS– Grazie a Safari Mobile– Assenza di pulsante hardware Back– Supporto iphoney di jQuery Mobile
• Solo per disperazione per altre piattaforme
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
Quindi?
• Sviluppo con MonoTouch è veloce e il risultato è efficace e valido– Se poi fa pure comodo andare su Android/WP7 ...
• Obj-C: è un fatto personale • PhoneGap: per iOS • E un po’ nativa e un po’ web?
Dino Esposito | Francesco Espositowww.crionet.it | @despos - @fesposi
www.expoware.org
TechnologyPartner
@despos@fesposi