Aquest tutorial assumeix que tens alguns coneixement bàsics de C, incloent-hi els tipus de dades C, què és una funció, què és un valor de retorn, conèixer els punters i la gestió de memòria a C. Si no en tens massa, et recomanem que t'hi introdueixis abans de continuar.
L'Objective-C, com a derivat de C, hereta totes les característiques de C. Hi ha alguns excepcions però no es desvien massa del que ofereix C com a llenguatge.
nil: En C/C++, probablement, has utilitzar NULL. A Objective-C aquest és diu nil. La diferència és que tu pot passar missatges a nil (per exemple [nil missatge];) i això és perfectament correcte. No pots aconseguir el mateix amb NULL.
BOOL: C no té un tipus oficial de booleà, i en realitat l'Objective-C tampoc. Està inclòs dins de les classes Foundation (anomenades amb la importació de NSObject.h). nil també està inclòs en el fitxer de capçalera. BOOL a Objective-C té dos estats. YES i NO en comptes de TRUE i FALSE.
#import contra #include: Tal com veuràs en l'exemple de l'Hola món, s'utilitza #import. #import és bàsicament el mateix que #ifndef #define #endif a principi i al final de cada fitxer .h que creïs. Per tots els propòsits, només utilitza #import. No molesta tant, i no creien que ho treguin. Per altra banda, Apple oficialment utilitza #import en tot el seu codi, i no creiem que Apple estigui d'acord en que ho treguin.
Les paraules mètode i missatge s'utilitzen indistintament a Objective-C, encara que els missatges tenen propietats especials. Un missatge pot transmetre's dinàmicament a un altre objecte. Cridar un missatge d'un objecte a Objective-C no significa que l'objecte implementa aquest missatge, només que aquest coneix com respondre-hi ja sigui implementant-lo directament o transmetent el missatge a una altre objecte que sap com fer-ho.
Doncs au, anem a fer el nostre primer programa. El primer que hem de fer és obrir la nostra IDE, en el cas de Mac OS X l'XCode que si l'heu instal·lat a /Developer/Applications/Xcode.
Un cop el tenim obert l'XCode, només tenim un menú. Llavors passem a crear la nostra primera aplicació, creant un nou projecte. Aneu a File > New Project o premeu les tecles corresponents. Quan us surti l'assistent seleccioneu Command Line Utility i dins seu Foundation Tool. Després d'indicar el nom del projecte i el directori on es guardarà un oferirà una sèrie de fitxers amb un en particular que conté el codi. Exactament és el fitxer HolaMon.m depenent del nom que hi heu ficat al projecte. El codi d'aquest fitxer és el següent:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {}
Bé, ara només cal que canvieu el text al català. ;-). Si el compilleu i l'executeu us sortirà una finestra amb els Logs del programa, i el missatge que hi heu ficat.
[Session started at 2005-08-20 13:00:56 +0200.] 2005-08-20 13:00:56.171 HolaMon[730] Hola, Món! Executable “Hola Mónâ€? has exited with status 0.
Però ja sé que em direu que això només funciona amb l'XCode, i en part teniu raó, dons l'XCode executa el compilador amb els paràmetres adients d'on agafar les llibreries i el fitxer resultant de la compilació. Clar que també podem mirar de fer-ho a mà des de la línia de comandes. Primer de tot executarem l'apliació des de la línia de comandes per comprovar que hem fet un programa de línia de comandes. Anem al directori del projecte i entrem en el directori build. A dins ja podem executar el programa ./HolaMon i ens retorna el següent:
2005-08-20 13:10:10.538 HolaMon[768] Hola, Món!
El següent pas és aconseguir compilar el programa des de la línia de comandes, per això comencem provant sort per si funciona gcc HolaMon.m. No hem tingut massa sort. Ens retorn errors d'enllaçat, on no troba algunes funcions de la llibreria Foundation. Doncs el següent pas és passar-li amb el paràmetre -framework on es troba la llibreria i el paràmetre -o per indicar el fitxer de sortida gcc -framework Foundation -o HolaMon HolaMon.m donant com a resultat:
2005-08-20 14:53:36.865 HolaMon[1235] Hola, Món!
Si a algú li interessa saber on trobar les instruccions exactes que executa l'XCode ho pot mirar en el recuadre central del menú Build > Detailed Build Result quan aquest compili.
Però pels que no teniu Cocoa, podeu fer la prova amb el codi següent, directament editant un fitxer hola.m amb un editor normal com vim, nano, o emacs.
#import <stdio.h>
int main( int argc, const char *argv[] ) {}
I per compilar-lo, executeu gcc hola.m -o hola
Utilitzeu #import en comptes de #include a Objective-C
Per defecte la extensió del fitxer d'Objective-C és .m
Un cop provat que podem compilar i executar un petit programa, ja estem preparats per introduir-nos a la programació orientada a objectes amb Objective-C. Per això crearem un projecte nou on implementarem una classe Fracció que ens permeti treballar les fraccions amb numerador i denominador.
Us recomanem que feu una ullada al resum del llenguatge Objective-C per conèixer com funciona, i que el tingueu com a referència a mida que aneu desenvolupant programari.
Doncs som-hi, anem a l'XCode i creem un projecte nou de línia de comandes anomenat AppFraccio, com en el projecte anterior. L'XCode ens tornarà a crear el codi de l'Hola Món anterior que ja ens encarregarem després d'esborrar o substituir.
Per crear una classe nova anem al menu arxiu > Nou fitxer con ens sortirà un assistent d'on seleccionarem dins l'arbre l'opció Cocoa > Objective-C class. Ens demanarà el nom de la classe que l'anomenarem Fraccio i el lloc on es guardarà i amb quines aplicacions es compilarà (en un projecte es poden tenir diferents destins de la construcció amb diferents classes a compilar). Deixem la resta de paràmetres per defecte i premem el botó de Finalitzar.
Podem comprovar que se'ns ha creat dos fitxers amb extensions .m i .h que representen a la classe Fraccio. Aquests dos fitxers ja contenen la base per que al compilar representin una classe, veiem que la classe hereta per defecte l'NSObject.