
Pubblichiamo un guest post di Giuliano Galea
Ci sono diversi luoghi comuni da sfatare riguardo lo sviluppo di applicazioni per iPhone OS, in particolare sul sistema operativo e sul linguaggio utilizzato. Questo post cercherà di fare un po’ di chiarezza su un punto iniziale: è corretto sostenere che iPhone OS sia una versione castrata di OS X?
Sistema Operativo
iPhone OS è un sistema operativo Unix based pensato per girare su dispositivi mobili dotati di schermo multitouch (al momento iPhone, iPod Touch e iPad). Da un punto di vista tecnico si basa su un kernel che è parente stretto del kernel Mach presente in OS X. Su di esso poggiano una serie di servizi ed api organizzati per livelli di astrazione.
A
Media contiene principalmente api c (Core Audio, Quartz, OpenGL ES etc etc) con la notevole eccezione di Core Animation, un motore avanzato per la gestione di animazioni sviluppato in objective-c. Al livello più alto troviamo infine Cocoa Touch, api completamente objective-c composta a sua volta da Foundation e UIKit.
Foundation contiene la definizione di NSObject, la root class da cui ereditano tutte le classi presenti in Cocoa (a parte una a dire il vero :)), le classi legate alla gestione/manipolazione/storage dei dati, wrapper OO per alcuni dei livelli più bassi ed in genere tutto quello che non riguarda l’interazione con l’utente o la visualizzazione.
Questi due aspetti sono di competenza di UIKit, la prima fra le api descritte ad essere specifica di iPhone OS: qui troviamo infatti le classi legate alla gestione del multitouch ed alla renderizzazione su schermo, oltre ad una serie di widget grafici legati all’UI. Possiamo quindi sfatare un luogo comune: iPhone OS NON è il parente povero di OS X, piuttosto una versione ottimizzata che condivide:
- i linguaggi di programmazione “ufficiali” (c/c++ e objective-c, però mancano python e ruby, entrambi in parte supportati in OS X) ⁃ molte api (i primi 3 layer della figura hanno dei corrispettivi analoghi in OS X, ed in Foundation ci saranno una decina di classi che mancano
- nella versione iPhone, molto del codice che usa Foundation compila indifferentemente sui due OS) il tool di sviluppo ufficiale (Xcode) ⁃ paradigmi e metodologie di sviluppo