images

Inicio a la programacion en iOS, Hola Mundo

1 Star2 Stars3 Stars4 Stars5 Stars6 Stars7 Stars8 Stars9 Stars10 Stars (2 votes, average: 4,50 out of 10)
Loading ... Loading ...

Es un hecho que los teléfonos móviles son cada vez menos “teléfonos” y no es raro encontrar personas que utilizan más sus terminales para acceder a sus aplicaciones o navegar por internet que para realizar llamadas. De hecho, con la llegada al mercado de las tablets se abandona por completo esa funcionalidad a cambio de unas mejores prestaciones y una pantalla más adecuada para navegar.

Los usuarios se han acostumbrado a manejar aplicaciones desde su teléfono móvil y cada vez más las demandan por sus beneficios como son el poder acceder cuando y donde sea o el poder ejecutarlas desde un “simple” teléfono y no necesitar un equipo de sobremesa o un ordenador portátil (que no todo el mundo tiene).

En la situación actual los dos grandes sistemas operativos para terminales portátiles son Android desarrollado por Google e iOS para los terminales de Apple.

Ya hemos hecho varios tutoriales sobre Android así que hoy empezamos con los de iOS.

Requisitos para empezar a programar:

  • IDE: XCode con el SDK de iOS,Última Version Gratuita* 3.2.6
  • S.O: De momento solo es posible desarrollar desde Mac OS X con una versión compatible con XCode, en nuestro caso Mac OS X Snow Leopard version 10.6.6

Es MUY recomendable tener nociones de:

  • Programación Orientada a Objetos.
  • Patron MVC.
  • C (sí… punteros).

*(Es necesario estar registrado como un Apple Developer, lo cual también es gratuito si no nos incluimos en ninguno de los programas de pago para desarrolladores).

Un poco de teoría.

Lo primero que necesitamos saber para empezar a programar en una nueva plataforma es qué lenguaje de programación debemos usar. En nuestro caso el lenguaje nativo de iOS (y de Mac OS X) es Objective-C. Objetive-C es un lenguaje de programación orientado a objetos que fue creado como un estricto superconjunto de C ¿Y esto que implica? Pues que es posible compilar cualquier programa escrito en C con un compilador de Objective-C, y también, que puede incluirse libremente código escrito en C dentro de una clase de Objective-C. Además, en el caso concreto de iOS existe una API para interactuar con el sistema operativo que se llama Cocoa Touch.

Generando la estructura del Proyecto.

Lo primero que tenemos que hacer es abrir el Xcode para acto seguido crear un nuevo proyecto mediante File -> New Project. Lo que nos mostrará una ventana de este estilo:

Seleccionamos la opción de “Window-based Application” asegurándonos de que estamos creando un proyecto de iOS y que seleccionamos el producto para el que vamos a desarrollar, por ejemplo, iPhone. No es necesario activar el Core Data Storage ya que en este proyecto no vamos a utilizarlo.

Por último le ponemos un nombre a nuestro proyecto y le indicamos la ruta donde queremos que se guarde.

Con esto se nos crearán las clases básicas del proyecto.

Podemos ver una clase main.m que es la primera que se ejecutará. Esta clase generará una instancia de UIApplication e inspeccionará el fichero info.plist en busca del “Main nib file base” para hacer que sea este el que se ejecute al cargar el UIApplication. Por defecto es el MainWindow.xib que se nos crea automáticamente y que ya está asociado al AppDelegate que se crea con el proyecto.

Este AppDelegate es el encargado de “escuchar” los cambios de estado de la aplicación (por ejemplo, como veremos más adelante, escucha cuando la aplicación se ha cargado completamente para poder cargar la interfaz de usuario ).

Ya podemos darle al botón de “Build and Run” para ver como el emulador ejecuta nuestra preciosa aplicación (siempre que te guste el color blanco).

Creando la vista de nuestro Hola Mundo.

La aplicación se ejecuta sin ningún problema, pero no hace nada en absoluto (pues nada hemos programado).

Es el momento de añadir un ViewController para poder controlar los eventos que ocurren en nuestra ventana (ese elemento Window que podréis ver en el MainWindow.xib).

Para ello vamos al menú File -> New File -> Cocoa Touch Class y seleccionamos UIViewController Subclass y seleccionamos la opción with XIB for user interface. Le damos a siguiente y le ponemos un nombre y una ruta.

Si no nos habíamos fijado todavía, vemos que se nos habrán creado 3 ficheros con el mismo nombre pero distinta extensión, uno con extension .h , otro con extension .m y (ya que se lo hemos indicado) un último fichero con extensión .xib. De forma similar a otros lenguajes basados en C, los ficheros .h son los “header” en los que se detallan las características de la clase, sus métodos públicos, sus atributos, sus herencias… mientras que el .m contiene la implementación de los métodos. Los ficheros .xib son los que se utilizan para crear la interfaz de usuario mediante el interface builder que nos provee Xcode.

El siguiente paso es registrar nuestro ViewController en la clase NombreProyetoAppDelegate, para ello accedemos al fichero .h del AppDelegate y primero declaramos que va a hacer uso de nuestra clase ViewControler escribiendo la siguiente linea justo después de los #import:

@class NombreViewController;

Después, tenemos que declarar un atributo de tipo NombreViewController dentro de AppDelegate, para ello escribimos la siguiente linea tras el cierre de llave y antes de “@end”:

@property (nonatomic, retain) NombreViewController *myViewController;

En este momento ya tenemos nuestro ViewController en el AppDelegate y tendremos una clase similar a esta:

#import <UIKit/UIKit.h>

@class NombreViewController;

@interface NombreProyectoAppDelegate : NSObject <UIApplicationDelegate> {
 UIWindow *window;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) NombreViewController *myViewController;

@end

Con esto ya tenemos nuestro AppDelegate.h, ahora vamos a por el .m.

Lo primero es importar nuestro ViewController con la siguiente linea (escrita junto resto de imports).

#import "NombreViewController.h"

Lo siguiente es añadir los métodos getter y setter mediante el tag @syntetice con la siguiente línea (escrita tras la linea de @implementation):

@synthesize myViewController;

Y por último debemos encontrar el método “application: didFinishLaunchingWithOptions:” que será llamado cuando la aplicación esté preparada para cargar la interfaz de usuario y añadir las siguientes líneas antes de [window makeKeyAndVisible]; :

NombreViewController *aViewController = [[NombreViewController alloc]
initWithNibName:@"NombreViewController" bundle:[NSBundle mainBundle]];
[self setMyViewController:aViewController];
[aViewController release];
self.window.rootViewController = self.myViewController;

con estas 4 líneas hemos:

  • Instanciado un objeto de tipo NombreViewController, Lo hemos inicializado con su archivo .xib (ficheros de interfaz builder)
  • Hemos establecido que la variable myViewController sea igual a este nuevo NombreViewController
  • Dado que hemos hecho un alloc, hemos “liberado el espacio en memoria” (en realidad decrementa el contador de uso… eso para otro post si acaso) de la variable que acabamos de crear.
  • Hemos indicado que el ViewController inicial de la ventana será esteViewController que acabamos de crear.

El programa debería ejecutarse sin problemas pero aún no mostraría nada, así que vamos a editar el fichero .xib para mostrar el siempre clásico “HOLA MUNDO“. Para ello hacemos doble clic sobre el fichero NombreViewController.xib y se nos abrirá el interface builder, buscamos el elemento Label de la “Library” y lo arrastramos hasta la superficie de la View (si no ves la ventana de librería pulsa comand+shift+l desde el interface builder, si no ves el “lienzo” de la view haz doble clic sobre el elemento “View” de la ventana NombreViewController.xib). Para modificar el texto hacemos doble clic sobre la label y escribimos, “HOLA MUNDO”.

Guardamos los cambios en el .xib, ejecutamos y …

Conclusiones.

Hasta ahora hemos visto como generar un nuevo proyecto, como crear un nuevo ViewControler, donde y como añadir un ViewControler a un elemento Window y como añadir y editar un label a un fichero .xib.

Hasta el momento ¿que os ha parecido más complicado Android o iOS?

En próximos post profundizaremos más en las posibilidades que nos ofrece iOS como los distintos elementos del interfaz de usuario, acceso al GPS, conexiones http etc.

  • afernandez

    Gran post! Parece mentira lo diferente que puede llegar a ser Cocoa, hasta tienen “nil”´s y todo.

    Es un lenguaje bastante difícil de entender al principio, pero una vez que te pones una y otra vez a hacer las cosas vas pillando por donde pega el viento. Tengo ganas de ver la primera fase de nuestra App en funcionamiento :) .

    Es una pena que solo se pueda desarrollar en Mac pero bueno.

    Un saludo

    • Alejandro

      Gracias a dios existe una solucion para tu problema con mac yo tenia una tarjeta madre gigabyte arrumbada con intel core 2 duo y 2gb en ram y la heche a a anada rocn hackintosh ahora mismo mi problema es actualizarla pero no dudo que en un par de horas comienze a programar para ios es simple solo tienes que tener paciencia y ganas de hechar a andar un hackintosh, ise snow leopard original de mac store e iboot legacy y con eso

  • jmarti

    Incidir en el comentario de @afernandez, una lástima que solo se pueda desarrollar para Mac. ¿tienes alguna propuesta para esto?

    Y para descargarse el SDK, hay que pagar 99$ al año de antemano??

    • rzornoza

      El XCode puede funcionar en un Hackintosh(Mac OS X instalado en un PC “normal”).Pero al hacer algo que se supone que no debe hacerse no hay muchas garantias. Otra opción es utilizar una máquina virtual. Hace algún tiempo que VirtualBox o VMWare soportan la virtualización de MacOSX (Un manual para VB: http://tecnolatino.com/instalar-mac-os-x-snow-leopard-en-windows-7/ ) pero el hardware del equipo ha de ser compatible, sobre todo el microprocesador. Además, si no me equivoco, la única licencia que permite la instalación virtualizada es la de la Version Server de MAC OS X y sólo si la máquina sobre la que se virtualiza es de Apple.

      Respecto al SDK, como ya indico en el post (con link a la descarga y todo), es posible descargar de forma gratuita la versión 3.2.6 si nos registramos de forma gratuita como desarrolladores de Apple. Pero si queremos utilizar la última version 4.0.2 (y también para publicar en el store…) necesitamos estar registrados como desarrolladores de iphone y ahí si que es necesario pagar 99$ al año, por adelantado. Para los que venimos de JAVA es algo dificil de digerir, pero es lo que hay.

      Un saludo.