Hola mundo (parte I)

Share


(Los fuentes del ejemplo están disponibles en el pie del artículo).

Nuestra primera aplicación para iPhone/iPod Touch, como no podía ser de otra manera, es el típico “Hola mundo”, en el que vamos a descubrir conceptos básicos de la estructura de una aplicación para iPhone, aunque muy importantes, ya que independientemente de la complejidad de la aplicación que hagamos, son comunes para casi todas.

Abrimos nuestro entorno de desarrollo xCode, y creamos una aplilcación para iPhone, la cual llamaremos “holamundo“. (recordamos los pasos ya vistos en el anterior artículo xCode, nuestro entorno de trabajo)

1. FICHERO PRINCIPAL main.m

Desplegamos nuestro nodo principal del arbol de la izquierda y localizamos en fichero principal main.m que se encuentra bajo la categoría de Other Sources, y ayudándonos con la opción Editor situada en la barra de botones superior abrimos el fichero en modo edición (alternando dicho botón nos mostrará una lista de ficheros en la categoría que nos encontremos o bien nos abrirá el editor). Este fichero es el punto principal de nuestra aplicación.

Tras el comentario vemos la inclusión del fichero de cabecera principal del framework UIKit, necesario ya que recordemos que contiene las clases relacionadas con la interfaz gráfica de nuestro iPhone. A continuación nos encontramos con el punto de entrada de nuestra aplicación, la función main.

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])

{

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

int retVal = UIApplicationMain(argc, argv, nil, nil);

[pool release];

return retVal;

}

NSAutoreleasePool es la clase encargada de la gesitón de memoria de Cocoa (nuestra API de programación para iPhone) y [pool release] envia un mensaje para liberarla. UIApplicationMain es la encargada de crear el objeto y el delegado de la aplicación e iniciar el ciclo de eventos. Los cuatro parámetros enviados son:

  • argc Número de parámetros recibidos. (Recibido en la función main)
  • argv Lista de argumentos. (Recibido en la función main)
  • principalClassName Nombre de la clase UIApplication. (Si pasamos nil, se asume que es UIApplication)
  • delegateClassName Nombre de la clase desde donde el delegado de la aplicación es instanciado. Si tu asignas al parámetro anterior una subclase de UIApplication, tu debes designar la subclase como el delegado obligatoriamente. En definitiva la instancia de dicha subclase recibe los mensajes como delegado de la aplicación. (Parámetro opcional).

2. FICHERO DELEGATE holamundoAppDelegate.m

El objeto asignado como delegate lo hemos definido en el cuarto parametro de nuestra función UIApplicationMain como ya hemos visto en el punto anterior. Este proceso asigna a dicha clase la posibilidad de recibir los mensajes que se procesen en la aplicación. Por defecto, tal y como ha sido creado nuestro proyecto de ejemplo, en la clase delegada viene definido el método applicationDidFinishLaunching el cual recibirá un mensaje de UIApplication cuando la aplicación termine de cargarse.

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen 
   mainScreen] bounds]];
contentView = [[MyView alloc] initWithFrame:[window bounds]];
[window addSubview:contentView];
[window makeKeyAndVisible];
}

El asistente de creación de nuestro proyecto incluye al igual que la clase delegada (holamundoAppDelegate), una clase que implementa la funcionalidad de la vista (MyView) que es la región contenida dentro de nuestra ventana. Nuestra clase de vista, la cual hereda de UIView, es utilizada para organizar de forma mucho más estructurada nuestra aplicación y para entenderlo bien solo debemos de pensar que una aplicación puede y debe tener múltiples vistas. Igualmente UIView es la clase proporcionada para gestionar todo tipo de animaciones y movimientos que vemos en cualquier aplicación de iPhone.

Volviendo al párrafo anterior, cuando recibimos el mensaje en el momento que nuestra aplicación termina de cargarse (applicationDidFinishLaunching) mostramos el contenido de nuestra vista, no sin antes inicializar nuestra ventana con el tamaño de la totalidad de la pantalla de nuestro iPhone e inicializar nuestra vista con el tamaño de nuestra ventana (initWithFrame).

3. FICHERO VISTA MyView.m

El método initWithFrame es el método que vamos a utilizar para la creación del contenido de nuestra vista (definido por defecto por nuestro asistente de creación de proyecto). Los objetos padre de nuestra vista se denominan supervistas y los objetos hijos subvistas. Al objeto padre principal de nuestra vista se accede mediante super.

A continuación crearemos una etiqueta de texto del tipo UILabel para mostrar el contenido de “Hola mundo”. Dicha etiqueta la definiremos como una propiedad de la siguiente manera:

    1. En nuestro fichero de cabecera MyView.h dentro de la definición de nuestra clase (UILabel *label;)
    2. A continuación de nuestra clase, haciendo coincidir el mismo nombre.
    3. En nuestro fichero de implementación MyView.m, mediante la directiva @synthesize la cual implementa automáticamente los métodos getter/setter de nuestra propiedad.
Creamos un rectángulo para indicar el tamaño de nuestra etiqueta mediante CGRect. Creamos el objeto label y definimos color de texto, alineación, tipo de fuente y contenido. Añadimos el objeto label como una subvista dentro de nuestra vista (addSubview).

- (id)initWithFrame:(CGRect)frame {

if (self = [super initWithFrame:frame])

{

self.backgroundColor = [UIColor whiteColor];

CGRect labelFrame = CGRectMake(40, 200, 220, 30);

self.label = [[UILabel alloc] initWithFrame:labelFrame];

self.label.textColor = [UIColor

colorWithRed:0 green:0 blue:0 alpha:1.0];

self.label.textAlignment = UITextAlignmentCenter;

self.label.font = [UIFont systemFontOfSize:30];

self.label.text = @"Hola Mundo";

[self addSubview: self.label];

}

return self;

}

Compilamos, ejecutamos y ahi tenemos nuestra primera aplicación.

Gracias a nuestro asistente de creación, completando la creación de UIApplication, holamundoAppDelegate y MyView hemos conseguido nuestra primera aplicación, sin necesidad de utilizar el editor de recursos Interface Builder (que en breve ya veremos).

Aplicación de ejemplo: holamundo.zip



                         banner ad

4 Responses to “Hola mundo (parte I)”

  1. Falete says:

    La explicación es bastante generosa en detalles y ambiciosa en su fondo. Aunque yo hubiera usado un ‘Hola Cordoba’.
    Bromas aparte ‘Sobresaliente’.

  2. Fire_tony says:

    Creo que sería conveniente actualizar un poco los tutoriales para las versiones más nuevas, ya que no se pueden hacer ya de esos proyectos.

    Con unos ligeros comentarios entre paréntesis para las nuevas versiones estaría más que perfecto.

  3. Davix says:

    Solo un apunte, en el punto donde se declara la propiedad el segundo punto no queda muy claro, lo que se debe hacer. Solo explicar que lo que hay que hacer es declarar la siguiente propiedad:

    @property (nonatomic, retain) UILabel *label;

    en la zona de declaración de métodos. Por lo demas un 10.

  4. pepe says:

    Tengo una duda… como se pone un label con salto de linea? osea varias lineas…

Leave a Reply

  • Buy Cheapest buy viagra from canada Now Best Prices. Order Cheap Meds Without Rx.
  • cialis next day Online Without Prescription Free Viagra Pills! Best Online.
  • Buy Cheap effects of viagra Online Pharmacy At The Best Price! Low Prices.
  • Buy Cheap viagra store in canada Now Cheap Prescription Drugs. Top Online Pharmacy.
  • Buy Cheap viagra cialis canadian pharmacy Now Best Drugstore. Drugs, Health And Beauty.
  • Buy Cheap viagra ads Now No Prescription Needed. WorldWide Shipping.
  • Buy Cheap order sublingual cialis Now Best Internet. Internet Prices For order sublingual cialis!
  • Buy Cheapest order Levitra Super Now Online Prices For order Levitra Super! Low Prices.
  • Buy Cheap best price viagra Online Pharmacy Store. 24/Online Pharmacy.
  • Buy Cheapest cialis precautions Now Best Online. Order Cheap Meds Without Rx.
  • Buy Cheap cialis soft gel india Now Drug Store Without A Prescription. Low Prices.
  • Buy Cheap canadian cialis Now WorldWide Shipping. Cheap Prescription Drugs.
  • Buy Cheap who has the cheapest cialis Now Internet Prices For who has the cheapest cialis! Best Online.
  • Buy Cheapest cialis from mexico Online No Prescription Needed. Low Prices.
  • Buy Cheapest viagra ad Online WorldWide Shipping. Pharmacy Store.
  • Buy Cheap recreational sex levitra Now Best Drugstore. Discount Pharmacy Online.
  • Buy Cheapest generic cialis Online Guaranteed Shipping. Free Viagra Pills!
  • Buy Cheapest buy sublingual viagra online Now Cheap Pharmacy Online. Best Internet.
  • Buy Cheap ciallis or viagra Now Buy Medications Online. WorldWide Shipping.
  • Buy Cheapest viagra amsterdam Now Cheap Prescription Drugs. Best Drugstore.
  • Buy Cheapest gernic viagra Online Internet Prices For gernic viagra! Best Online.
  • Buy Cheapest uk levitra Online Best Internet. Buy Medications Online.
  • Buy Cheap buy levitra on line Now Online Medical Shop. Online Prices For buy levitra on line!
  • Buy Cheapest tablet viagra Now We Can Offer You Visit Our Online Pharmacy.
  • Buy Cheap cialis women Now Drugs, Health And Beauty. Top Online Pharmacy.
  • Buy Cheap viagra and alternatives Online Best Drugstore. Internet Prices For viagra and alternatives!
  • Buy Cheap gel viagra Now WorldWide Shipping. Drugs, Health And Beauty.
  • Buy Cheap buy generic levitra Online Best Online. Buy Medications Online.
  • Buy Cheap buying cialis online Online 24/Internet)(safe Pharmacy. Best Prices.
  • Buy Cheap cialis buy Online Cheap Pharmacy Online. Top Online Pharmacy.
  • Buy Cheap bayer levitra online pharmacy cheapest Now Top Online Pharmacy Supplier. Best Drugstore.
  • Buy Cheapest cialis viagra packs Now Low Prices. Safe And Secure Payment System.
  • Buy Cheapest cialis levia and viagra Online Best Online. Online Medical Shop.
  • Buy Cheap order levitra Now Cheap Online Pharmacy. Guaranteed Shipping.
  • Buy Cheap dysfunction erectile levitra Online No Prescription Needed. Best Internet.
  • Buy Cheap maximize effects of levitra Online Guaranteed Shipping. Free Viagra Pills!
  • Buy Cheap approval cialis Online Best Online. The Largest Internet Pharmacy.
  • Get generic cheap cialis Without Prescription Consultation. 24/Online Pharmacy.
  • Buy Cheap side affects of viagra Now Online Medical Shop. Buy Medications Online.
  • Buy Cheap daily dose cialis availability Now Best Prices. Cheap Meds Without Prescription.
  • Buy Cheapest discount brand viagra Online 24/Online Pharmacy. Low Prices.
  • Buy Cheap best results for taking cialis Online Pharmacy Store. Special Prices For best results for taking cialis!
  • Buy Cheap cialis generique Now Guaranteed Shipping. No Prescription Needed.
  • Buy Cheapest levitra consultation Now Online Medical Shop. Guaranteed Shipping.
  • Buy Cheapest vardenafil safe levitra alternative Now Pharmacy Store. Internet Prices For vardenafil safe levitra alternative!
  • Buy Cheapest cialis online generic Online Cheap Prescription Drugs. Low Prices.
  • viagra online in canada Online Without Prescription Best Prices. WorldWide Shipping.
  • Buy Cheap generic online viagra Now Online Medical Shop. Discount Pharmacy Online.
  • Buy Cheap viagra effect on women Now Order Cheap Meds Without Rx. Best Internet.
  • Buy Cheap cialis where Now Best Internet. Pharmacy At The Best Price!
  • Buy Cheapest levitra result Now Pharmacy Store. Pharmacy At The Best Price!
  • Buy Cheap cialis canada prescription Online Cheap Online Pharmacy. WorldWide Shipping.
  • Buy Cheap order viagra online Now Top Online Pharmacy. 24/Online Pharmacy.
  • Buy Cheap drug for impotence levitra Online Pharmacy Store. Drugs, Health And Beauty.
  • Buy Cheapest female viagra sildenafil Online Best Prices. Cheap Prescription Drugs.
  • Buy Cheap method levitra Now No Prescription Needed. Cheap Online Pharmacy.
  • Buy Cheapest viagra cheapest Online Low Prices. Discount Pharmacy Online.
  • Buy Cheap women cialis Now 100% Satisfaction Guaranteed. Low Prices.
  • Buy Cheap cialis free shipping Online Pharmacy Store. Discount Online Pharmacy.
  • Buy Cheap discount cialis Now Free Viagra Pills! Pharmacy At The Best Price!
  • Buy Cheapest can woman take cialis Online 24/Online Pharmacy. Best Online.
  • Buy Cheapest levitra versus cialis Now Best Prices. 24/Internet)(safe Pharmacy.
  • Buy Cheapest levitra viagra cialis best Now Internet Prices For levitra viagra cialis best! Pharmacy Store.
  • Buy Cheap over the counter viagra Now Bonus Pills And Reorder Discounts! Low Prices.
  • sildenafil cialis generico Online Without Prescription Low Prices. Online Medical Shop.
  • Buy Cheap purchase cialis online Now Pharmacy Store. Order Cheap Meds Without Rx.
  • Buy Cheapest sample pak levitra Online Best Internet. Cheap Prescription Drugs.
  • Buy Cheap buy online cialis Online Top Online Pharmacy. Best Drugstore.
  • Buy Cheapest cialis levitra Online Best Drugstore. Guaranteed Shipping.
  • Buy Cheap soft viagra fast delivery Now 100% Satisfaction Guaranteed. Low Prices.
  • Buy Cheapest order 50mg viagra Now Pharmacy Store. Online Prices For order 50mg viagra!
  • experience with cialis Online Without Prescription Best Drugstore. Best Prices.
  • Buy Cheapest women take viagra Online Pharmacy At The Best Price! Low Prices.
  • Buy Cheap viagra effects Now Pharmacy At The Best Price! Best Internet.
  • Buy Cheapest viagra pennis enlargement Now Cheap Pharmacy Online. WorldWide Shipping.
  • Buy Cheap discount viagra generic Now Low Prices. All Medications Are Certificated!
  • Buy Cheap buy cheapest viagra online Now WorldWide Shipping. Guaranteed Shipping.
  • Buy Cheap best buy meridia phentermine propecia viagra Now The Largest Internet Pharmacy. Best Prices.
  • Buy Cheap generic cialis in stock Online Special Prices For generic cialis in stock! Best Internet.
  • Buy Cheap levitra sex pill Online Cheap Prescription Drugs. Best Drugstore.
  • Buy Cheap cialis for overseas Now Top Online Pharmacy. Discount Pharmacy Online.
  • Buy Cheapest cialis offers Online Cheap Prescription Drugs. Best Online.
  • Buy Cheapest non prescription type cialis Now Best Drugstore. Cheap Online Pharmacy.
  • Buy Cheapest erection viagra Now Best Drugstore. Internet Prices For erection viagra!
  • Buy Cheap cialis generic purchase Online Best Online. Order Cheap Meds Without Rx.
  • Buy Cheapest cialis in uae Now Best Prices. Buy Medications Online.
  • Buy Cheapest levitra sperm pills Online Best Online. Special Prices For levitra sperm pills!
  • Buy Cheapest order female viagra Online Pharmacy Store. Top Online Pharmacy.
  • Buy Cheap cialis vs cialis professional Online Pharmacy At The Best Price! Best Drugstore.
  • Buy Cheapest get viagra in canada Online Free Viagra Pills! Pharmacy Store.
  • levitra tabs Online Without Prescription Low Prices. Free Viagra Pills!
  • Buy Cheapest herbal womans viagra Now 24/Online Pharmacy. Free Viagra Pills!
  • Buy Cheapest cialis wholesale Now Discount Online Pharmacy. Best Prices.
  • Buy Cheapest buying online viagra Now Cheap Pharmacy Online. Best Drugstore.
  • Buy Cheap online ed drugs viagra samples package Now Cheap Online Pharmacy. Top Online Pharmacy.
  • Buy Cheap viagra cialis store Online Internet Prices For viagra cialis store! Best Internet.
  • Buy Cheap levitra half life Now Free Viagra Pills! Top Online Pharmacy.
  • Buy Cheap viagra plus cialis Now Top Online Pharmacy. Drugs, Health And Beauty.
  • Buy Cheap ordering viagra Now Best Prices. Special Prices For ordering viagra!
  • Buy Cheapest viagra cialis levitra comparison Online Best Prices. No Prescription Needed.