Curs Programació MacOSX - Objective-C (I)
El primer que farem és un senzill Hola Mon. Realment es podria fer exactament de la mateixa manera que el fem a C, ja que Objective-C és una extensió de C. Però mirarem d'utilitzar les eines de l'objective-c i les funcions de les frameworks fetes amb aquest llenguatge.
Ho farem a partir del codi que ens ofereix l'XCode al crear un projecte tipus "Foundation Tool" (el podeu trobar en la secció "Command Line Utility". El nom del projecte serà "HolaMon".
Aquest és el codi que ens apareix, que analitzem a continuació.
14 març 2008 08:17
:: HolaMon.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// insert code here...
NSLog(@"Hello, World!");
[pool drain];
return 0;
}
14 març 2008 08:19
El primer que veiem és el nom del fitxer. En Objective-C l'extensió dels fitxers acostuma a ser ".m" i ".h". El nom del fitxer té relació amb el nom del projecte.
La primera línia conté un "#import" això és semblant a un "#include" de C, però té la peculiaritat que no torna a carregar fitxers prèviament carregats evitant errors de doble definició. El fitxer Foundation.h conté les definicions de la framework Foundation.
Després tenim la definició de la funció main que no té cap secret pels qui han programat amb C i C++.
La línia que comença amb "NSAutoreleasePool" no hi aprofundirem, però serveix per a la gestió de la memòria. Però com que aquí no gestionarem la memòria de l'aplicació fins i tot la podríem eliminar.
Clarament, la següent línia ens diu en anglès que afegim allí el codi. I la següent línia és on hi tenim el nostre codi en anglès (podeu canviar-lo al català). Aquesta línia conté la funció NSLog que si mirem a l'ajuda ens diu que ens permet treure un missatge per la sortida d'error. Veiem que la cadena de text va precedida del símbol "@" arroba, això indica que és un objecte NSString, un cadena de text en format unicode. Un dels avantatges de programar amb Objective-C és no haver-se de preocupar de la codificació, doncs l'unicode permet representar qualsevol codificació de text.
La penúltima línia té a veure amb la primera, que servia per gestionar la memòria, així que no l'explicarem. Si esborrem la primera línia aquesta també cal esborrar-la.
La última línia només retorna el número zero "0" que indica que el programa a acabat sense cap error.
14 març 2008 08:23
Si compileu el programa podeu veure'n el resultat de diferents formes. Si l'executeu des de l'XCode caldrà que obriu la consola (Menú -> Run -> Console) i veureu els missatge "Hola Món". Si l'executeu des d'un terminal caldrà que entreu en el directori on està compilat el programa "build/Release" o "build/Debug" i executar-lo "./HolaMon" i ja podeu veure el resultat.
Compilar el programa des de la línia de comandes és senzill "gcc -framework Foundation -o HolaMon HolaMon.m". Podeu veure que s'ha hagut de definir les frameworks que utilitzem. Això ens crearà l'executable "HolaMon" en el mateix directori on hi ha el codi font.
14 març 2008 08:23
Bé, sembla senzill oi. Només cal tenir en compte les diferències de l'Objective-C i conèixer les classes de les diferents frameworks. La pròxima entrada tractarà de les principals diferències que hi ha respecte el llenguatge C.
14 març 2008 08:24
M'agradaria saber on es pot trobar l'explicació de l'objecte, funció, mètode o el que sigui "NSLog". Ho provat de buscar, però no hi ha manera de trobar un lloc a l'estil http://www.ruby-doc.org/core/ per a Ruby. Segur que existeix, però he estat incapaç de trobar-ho
15 març 2008 13:26
Hola apuratepp,
Si ets usuari de MacOSX tens l'entorn de desenvolupament XCode, on hi ha tota la documentació (i per cert molt bona) en anglès. Només cal seleccionar la funció que vulguis i treure el menú contextual i seleccionar l'opció "Find Selected Text in API Reference". Aquí ho pots veure:

Si no tens l'XCode, pot mirar a la web d'Apple on hi ha la mateixa documentació (actualitzada) i fer una cerca. Aquest és l'enllaç de l'NSLog i el genèric:
- http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Miscellaneous/...
- http://developer.apple.com/documentation/
Espero haver-te ajudat.
16 març 2008 19:47
Hola! He provat el que proposeu i funciona perfecte en la consola, pero no apareix en el simulador del iPhone del SDK. Com ho puc fer?
19 març 2008 15:37
Hola, avui m'he descarregat l'SDK de l'iPhone. Són 2,1GB i a primer cop d'ull tampoc he vist cap diferència. Caldrà mirar els vídeos explicatius per veure on és el simulador.
També hi ha exemples, potser descarregant-nos-els podem executar l'emulador. Bé, quan tingui una mica de temps m'ho miraré.
19 març 2008 23:22
Assegura't que tens el SDK instal.lat i que has escollit una aplicació del tipus iPhone. Llavors en apretar "Build and Run" se t'ha d'executar el simulador.
19 març 2008 23:50
Jo també he provat aquesta primera entrega i compilat i executat des de la consola. Tot ha funcionat ok.
21 març 2008 13:58
Ei, això ha estat només l'entradeta per veure que tothom ha trobat l'XCode, i pugui compilar un Hola Món. La pròxim a entrega serà més de concepte i veureu les diferències que hi ha entre el llenguatge C i l'objective-C, una mica per sobre.
I a la tercera entrega ja jugarem amb classes.
21 març 2008 17:19
Ei, gràcies per aquesta introducció a l'Xcode. Feia algun temps que volia aprendre a utilitzar-lo per fer algun programeta per al Mac. Aquestes lliçons publicades en forma de bloc m'anirán de meravella.
Salutacions des de la Politècnica d'Alacant.
27 març 2008 19:29
És un plaer.
27 març 2008 19:32
