
Al igual que en anteriores artículos de iPhoneSoftware, se da por hecho que el lector tiene algunos conocimientos previos, pues de lo contrario, todo esto le sonaría a chino. Este es el caso también de este último post de la Antesala al desarrollo, en el cual vamos a comentar algunos aspectos del lenguaje utilizado para crear aplicaciones para iPhone/iPod Touch.
Por supuesto, existen otros lenguajes, al igual que existen otras herramientas para desarrollar aplicaciones para iPhone (toolchain), pero vamos a continuar con la linea propuesta por Apple para el desarrollo de las mismas, ya que por experiencia, a la larga nos vamos a evitar problemas no previstos y sorpresas no agradables.
1. Cocoa
Fiel compañero de ObjetiveC en esta aventura, es la API de programación orientada a objectos de Mac OSX. Para el caso de iPhone vamos a destacar Fundation Framework que son el conjunto de clases utilizadas para representar estructuras de datos complejas (arrays, diccionarios, etc), UIKit Framework donde se incluyen las clases relacionadas con la interfaz gráfica para iPhone y CoreGraphics.framework que se encuadra dentro de los servicios de aplicación y sirve de apoyo a UIKit y entre otras cosas se encarga del envio de mensajes al servidor de ventanas. Con unos conocimientos más avanzados, veremos como es posible crearnos nuestro propio framework, que nos servirán como librerias propias a nuestras aplicaciones.
2. ObjetiveC
Es conveniente saber que ObjetiveC es una extensión de C (con ciertas diferencias con respecto a C++)para hacerlo orientado a objetos por lo que muchas características de su sintaxis han sido heredadas como:
En el mundo Mac, en lugar de la utilización de C+, este lenguaje es el más utilizado para programar la API orientada a objetos de Mac OSX (Cocoa) y ahora le toca el turno a iPhone (Cocoa Touch).
Los ficheros de código fuente tienen la extensión .m y en ellos podemos usar la sintaxis de C o de ObjetiveC.
Los protagonistas de ObjetiveC, al igual que otros muchos lenguajes son clases, objetos, variables de instancias, métodos, encapsulación, clases como estructuras de datos, objetos cadena, etc.
Llegados a este punto, la finalidad de que los conceptos principales (muy a grandes rasgos) al menos nos empiezen a sonar, es recomendable para continuar, conocer algo más a fondo el lenguaje antes de empezar. Para ello os recomiendo un buen manual como el de Fernando López Hernández que lo podeis encontrar aquí, y el cual me ha servido a mi personalmente de gran ayuda.
Damos por finalizada la categoria de la Antesala al desarrollo y nos preparamos para adentrarnos en la “faena” de verdad. Así que hasta la próxima. Saludos.
Nos acercamos a la finalización de estas nociones básicas antes de ponernos “manos a la obra” con nuestra primera aplicación para iPhone.
En esta recta final, vamos a hacer un pequeño repaso a nuestro entorno de trabajo XCode y para un siguiente y último artículo antes de empezar, haremos también un breve repaso a los que van a ser nuestros compañeros de viaje ObjetiveC y Cocoa Touch.
Centrándonos ahora con XCode, debemos saber que nuestro entorno de trabajo está actualmente en la versión Beta 3.1 y en ella vamos a poder tener a mano nuestros ficheros de proyecto, información de errores y advertencias, localización de ejecutables binarios, control de versiones, puntos de ruptura en el código, etc.
Una vez instalado nuestro Kit de desarrollo SDK para iPhone, ejecutamos XCode y seleccionamos el tipo de aplicación que queremos crear. En este caso seleccionamos una aplicación para iPhone con Cocoa Touch (nuestro framework para iPhone).

Una vez seleccionado y asignado un nombre para nuestro proyecto, nos encontraremos con la herramienta que más usaremos a partir de ahora, nuestro entorno de trabajo. Ahora veremos los detalles principales de nuestro entorno en modo proyecto y en modo depuración.
El modo proyecto es el tipo de vista que nos permite trabajar con todos los ficheros y grupos de nuestro proyecto. Los grupos es la clasificación para organizarlos todos y son clases, otros fuentes (contiene el fichero main.m el cual define la función main como punto de entrada a nuestra aplicación, y el fichero pch que es el que contiene las cabeceras precompiladas y ayuda a reducir los tiempos de compilación), recursos (que alberga el fichero xib o fichero de recursos de interfaz gráfica), frameworks (librerias utilizadas) y productos (fichero compilado y listo para ejecutarse).

Con este breve repaso acerca de nuestro entorno de desarrollo y tras el siguiente artículo relacionado con ObjetiveC y Cocoa Touch, pasaremos a desarrollar, compilar y depurar nuestra primera aplicación.
Aunque no vamos a descubrir muchas novedades con respecto a la plataforma de Mac OSX, sería bueno hacer un breve repaso acerca del sistema operativo de iPhone/iPod Touch y saber para que tipo de plataforma vamos a trabajar.
El sistema operativo de iPhone/iPod Touch se ha basado, como no podía ser de otra manera, en su hermano mayor Mac, sosteniendo su base sobre las siguientes capas:

Core OS, Core Services y Media son una copia exacta del código fuente de Mac OSX y la única que ha sufrido algunas variaciones ha sido Cocoa, ya que en Mac OSX, Cocoa se limitaba al uso del ratón y teclado y es por ello que para adaptarse al uso de iPhone y su pantalla tactil haya sido modificada, y como resultado se ha llamado ahora Cocoa Touch.
CORE OS: Los pilares de este sistema operativo de iPhone residen aqui y lo forman:
CORE SERVICES: Los servicios básicos del sistema , y consta de:
MEDIA: Capa de gestión multimedia (gráficos, audio, videos, etc) se compone de:
Para terminar Cocoa Touch, el framework de desarrollo para iPhone/iPod Touch:
Quizás estemos acostumbrados a los ficheros ejecutables (EXE) para aplicaciones Windows, los cuales no tienen nada ver con la estructura de las aplicaciones para Mac, y en este caso para iPhone/iPod Touch. Apple ha adoptado la practica de crear aplicaciones auto contenidas con sus propios ficheros de recursos, en una carpeta con extensión app. De esta forma, el proceso de instalación puede resumirse de forma sencilla simplemente arrastrando dicha carpeta a nuestro directorio applications sin necesidad de utilizar ningún instalador. Este directorio, está organizado siguiendo una estructura que contiene los recursos necesarios para la aplicación, información acerca de la misma y los ficheros binarios ejecutables. El compilador no es el encargado de generar este directorio app, ya que solo genera el ejecutable binario. Por lo tanto es tarea del desarrollador crear esta estructura que eventualmente alojará los ficheros binarios y sus recursos. El contenido del directorio app para una aplicación iPhone/iPod Touch está mucho menos estructurada que para una aplicación de escritorio de Mac, y contiene los siguientes elementos, tomando como ejemplo una aplicación llamada Mobile:
A continuación, y para finalizar con el artículo de hoy mostramos un ejemplo del fichero de información info.plist:
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>Terminal</string>
<key>CFBundleIdentifier</key>
<string>com.google.code.mobileterminal</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
</dict>
</plist>
El SDK (Software development kit) o kit de desarrollo de software, son las herramientas y librerias necesarias para crear aplicaciones. Desde que Apple anunciase en febrero la salida de la primera versión del kit de desarrollo SDK para iPhone, actualmente estamos ya en la tercera beta, preparándonos para su salida oficial en Junio. Disponible para descargarla desde su Web, es necesario registrarse previamente. El kit incluye diversas herramientas para el desarrollo de aplicaciones, entre otras:
Aunque incluye alguna herramienta más, ejemplos o documentación, nos centraremos principalmente en estos, e iremos conociéndolos uno a uno.
“¿Por dónde empezar?. Tienes un iPhone ó un iPod Touch, y quieres desarrollar tus propias aplicaciones para dichos dispositivos, bien para uso propio o para venderlas”.
Si nos encontramos con esta duda, estás en el lugar indicado.
En este blog no vamos a comentar las distintas formas que tenemos de habilitar nuestro dispositivo para instalar otras aplicaciones de terceros, y no porque sea ilegal, que de hecho no lo es, sino porque creemos que ya existen multitud de sitios que lo explican de forma muy clara y porque no es el objetivo de este blog. Tan solo, a modo de ayuda para quién lo necesite tan solo tiene que buscar temas relacionados con iJailbreak ó Pwnage tool.
En un principio, las aplicaciones que desarrollemos nosotros mismos, no podrán ejecutarse aún en ningún dispositivo iPhone/iPod Touch, a no ser que nos hagamos con el Programa de desarrolladores que ofrece Apple por un precio de 99$ o nos esperemos hasta finales de Junio ya que Apple tiene planeado lanzar la versión final del software iPhone 2.0 a modo de actualización de software gratuita para todos los clientes del iPhone. Las aplicaciones creadas para el iPhone funcionarán también en el iPod touch, y los usuarios del iPod touch tendrán que adquirir una actualización de software para ejecutar estas aplicaciones.
Nuestra elección, hasta que todo esto se aclare un poco, vamos a desarrollar aplicaciones con el simulador que trae el SDK gratuito, y a medida que aparezcan nuevas actualizaciones de Apple, cada uno iremos optando por la mejor solución (contratar el kit de desarrolladores, actualizar en Junio a la versión 2.0 del firmware, etc).
Lo dicho, vamos a hacernos con el SDK…