Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programar en Mac - AppleNeXt
Programar en Mac - AppleNeXt
Un manual de
Programar en Mac
Introduccin
Vivimos tiempos de moda para los usuarios del Mac, los Macusers. Cuando Apple lanz por primera vez el
Mac OS X dio comienzo a una nueva era para la programacin en Mac y para el mundo de Apple. Al margen
de la slida estructura basada en UNIX, el Mac OS X abri el camino a nuevas funcionalidades y posibilidades
que para los Macusers eran tan slo un sueo hace pocos aos.
Gracias a este nuevo sistema operativo, Apple fij su mirada en los developers (desarrolladores o
coloquialmente, programadores) y desde entonces, no ha hecho ms que profundizar en esa relacin.
El elemento principal de esta fructfera relacin entre Apple y los programadores es Cocoa, el modo de
programacin en Mac (un conjunto de APIs) basado en el lenguaje de programacin C-Objective, que a su
vez es una potente evolucin del Lenguage C.
Nuestro objetivo con este manual es aprender a utilizar Cocoa para programar en Mac. Pero antes de nada,
sepamos que es Cocoa.
2010 AppleNeXtcom
Programar en Mac
Programar en Mac
En las versiones anteriores de Mac OS X, el kit de herramientas para desarrolladores vena en un CD separado.
Pero las nuevas versiones no. Normalmente tendrs la opcin de instalarlos con el DVD de instalacin de tu
Mac, pero si no quieres andar buscando el DVD en el bal de los recuerdos, podrs descargarlo en internet.
Cmo? Tan sencillo como dndote de alta como miembro gratuito de la Apple Developer Connection:
developer.apple.com
De hecho, aunque tengas un disco con las herramientas de programacin, te conviene echar un vistazo a la
ADC para ver si tu versin est actualizada, puesto que Apple suele renovar esas herramientas y mejorarlas
cada poco tiempo. Conviene que hagas de la ADC tu pgina de referencia para programar porque ser la
mejor manera de que ests al da.
Aunque el Xcode y las dems herramientas para programar en Mac sean gratuitas no por ello significa que
sean de peor calidad. Ms bien, todo lo contrario. Con el Xcode de Macintosh podrs sacar mucho provecho a
las siguientes posibilidades:
Escribir cdigos de programacin en una amplia variedad de lenguajes diferentes: C, Objective-C, Python,
Ruby, Java, y como no, AppleScript.
Crear
atractivos interfaces siguiendo las lneas del Human Interface Guidelines de Apple. Para eso
utilizars la herramienta llamada Interface Builder que viene incluido en el kit de herramientas.
Programar
interesantes aplicaciones, muchas de las cuales podrs utilizar en nuevos cdigos sin la
necesidad de volverlos a escribir.
2010 AppleNeXtcom
Programar en Mac
Por lo tanto:
1. Entrar en la Apple Developer Connection (ADC): developer.apple.com
2. Registrarse como usuario: Podrs elegir uno de los programas de programadores: Gratuito
2010 AppleNeXtcom
Programar en Mac
El SDK del iPhone es el mismo para iPad e iPod Touch. Adems incluye el Xcode, que es la aplicacin
necesaria para programar en Mac OS X. Por lo tanto, descargando la ltima versin del iPhone SDK no
necesitars nada ms para empezar a programar para Mac.
2010 AppleNeXtcom
Programar en Mac
iPhone SDK
Aunque ya lo hemos explicado en AppleNeXt.com, para los despistados vamos a recordar qu es el iPhone
SDK.
Se trata de un kit de herramientas necesarias para la Programacin en Mac (en concreto para programar
Apps para el iPhone, pero las herramientas para el iPhone son las mismas que para Mac OS X). Descargando
el iPhone SDK podrs programar tanto para iPhone como para Mac OS X, iPad o iPod Touch. Durante este
manual nos referiremos a l como iPhone SDK o iPad SDK indistintamente.
El iPhone SDK se puso a disposicin de los desarrolladores un ao despus del lanzamiento del primer
iPhone, el 8 de marzo de 2008. Adems se anunci el lanzamiento de la AppStore, la principal tienda de Apps.
Programar en Mac
2010 AppleNeXtcom
Programar en Mac
Cocoa
Cocoa es el nombre que reciben las APIs o el conjunto de frameworks para Programar para Mac. Es, para que
nos entendamos, un modo de programacin basado en el lenguaje Objective-C (como ya sabemos, una
evolucin que potencia las posibilidades del lenguaje C).
Programar en Mac
Programar en Mac
El sistema operativo y el kit de herramientas continuaron bajo el nombre de NeXtSTEP, que aunque no fuese
comercializado en ningn ordenador desde entonces, tuvo mucho xito en la comunidad cientfica, los
programadores y agencias de investigacin. Se desarrollaban nuevas aplicaciones cada semana y los
cientficos se dieron cuenta que NeXtSTEP les permita implementar sus ideas con mayor velocidad que
cualquier otro sistema operativo.
Programar en Mac
Programar en Mac
Programar en Mac
Ya te sabes la historia.
Ya has descargado las herramientas.
NOTA: Este es un manual creado por AppleNeXt.com . Como parte de los servicios que prestamos, el profesor Emilius B. Starking estar
encantado de resolver las dudas que te surjan mientras aprendes a Programar en Mac. Para ello, debers acceder a la web de AppleNeXt.com
y consultar la seccin Resuelve tus Dudas, en la que el Prof. Starking publicar las respuestas.
2010 AppleNeXtcom
Programar en Mac
Programar en Mac
http://developer.apple.com/iphone/library/navigation/index.html
Cocoa Touch
En el iPhone, iPad e iPod Touch, Cocoa es conocido como Cocoa Touch porque estos dispositivos contienen
eventos de tipo touch (tctiles). Sabes de sobra de lo que estoy hablando puesto que llevas mucho tiempo
toqueteando tu iPhone o tu iPod Touch y habrs ampliado una foto, girado con tus dedos, abierto una
ventana o ajustado el navegador del Safari...
Tcnicamente, los Touch events te permitirn programar respuestas para cada vez que el ususario toque la
pantalla del iPhone con sus dedos.
2010 AppleNeXtcom
Programar en Mac
Tecnologa
Lenguaje de Programacin
Cocoa Touch
Objective-C
Media
iPhone OS
Core Service
Cuando avancemos un poco sabrs lo que son las Clases. Hoy por hoy, simplemente te digo que Cocoa
Touch te proporcionar las libreras bsicas de Clases que necesitars para crear tus aplicaciones para el
iPhone.
Foundation Framework
Otro de los conceptos que debes conocer para aprender a Programar en Mac son los Frameworks. Los
Frameworks son colecciones de cdigo dedicados a una misma tarea. Se entiende, no? Pues bien, para
Programar aplicaciones para el iPhone utilizaremos siempre dos tipo de Frameworks:
Foundation framework: destinado a colecciones de temas estndar y tareas bsicas.
UIKit framework: Destinado al interfaz de usuario.
La comodidad del Foundation framework es que existe una amplia coleccin de tareas bsicas ya
programadas que puedes utilizar sin necesidad de programarlas t mismo desde cero. No te preocupes,
Apple tambin selecciona sus componentes, no los fabrica desde cero. Nosotros no queremos perder tiempo.
2010 AppleNeXtcom
Programar en Mac
NOTA: Te recomendamos que coloques la aplicacin Xcode en el dock de tu Mac para que sea ms rpido
llegar a l, puesto que a partir de ahora lo vamos a utilizar bastante.
2010 AppleNeXtcom
Programar en Mac
Cuando se abra el panel de proyectos, vers que existen multitud de posibilidades. Esta vez vamos a realizar
una aplicacin para Mac, por lo tanto seleccionaremos Cocoa Application dentro de la lista de Mac OS X.
2010 AppleNeXtcom
Programar en Mac
Pon el nombre que quieras a tu nuevo proyecto. Yo he escogido NumerosAleatorios que es el tema de
nuestra primera aplicacin para Mac OS X. Pulsa Save.
Xcode habr creado el directorio de tu nuevo proyecto con el esqueleto bsico de cualquier aplicacin. Lo
que nosotros deberemos hacer es desarrollar ese esqueleto bsico a nuestro gusto y despus compilarlo
todo en una Aplicacin que funcione. Esto es programar.
2010 AppleNeXtcom
Programar en Mac
Echando un vistazo al directorio de tu proyecto podrs ver que existe una visualizacin global del proyecto
en la zona de la izquierda de tu ventana. Cada uno de los elementos de esa parte de la ventana representa un
tipo de informacin diferente que ser de utilidad para el programador.
Algunos son archivos, otros son mensajes (como los errores del compilador). Por ahora nos centraremos en
los archivos, as que haz click en NumerosAleatorios para ver los archivos que sern compilados dentro de
una aplicacin.
El esqueleto que vemos ser compilado al terminar de programar nuestra aplicacin y estar compuesto por
al menos una ventana y un men, como todas las aplicaciones en Mac OS X.
Haz click en el smbolo que tiene un martillo y un play verde para construir la aplicacin y hacerla funcionar
(Build and Run, en ingls).
2010 AppleNeXtcom
Programar en Mac
Mientras la aplicacin se construye vers que el icono de Xcode en el dock se cambia para indicarte que est
trabajando. Una vez finalizado vers la ventana y el men que habamos dicho...
El nombre de tu nueva aplicacin aparecer en el men; esto te indicar que tu aplicacin est activa.
La ventana evidentemente estar vaca, puesto que no hemos desarrollado an el esqueleto de nuestra
aplicacin, pero te dars cuenta que ya tenemos los elementos bsicos de cualquier aplicacin. Ahora
tendremos que programar el nuevo cdigo. Vamos all!
Cierra la aplicacin NumerosAleatorios (como cualquier aplicacin que existe cmd+Q) y regresemos a Xcode.
2010 AppleNeXtcom
Programar en Mac
NOTA: Podrs personalizar tu espacio de trabajo las veces que quieras. Aqu te ir recomendando algunas
cosas, pero siempre depender de lo que te sea ms cmodo a la hora de trabajar.
2010 AppleNeXtcom
Programar en Mac
Ahora haciendo click en Editor seleccionaras el modo de vista editor sobre la parte que hayas seleccionado
del cdigo de programacin. En esta ocasin habamos seleccionado main.m y tras hacer click en Editor
accederemos una vista ms sencilla de la funcin main.m
Vers algo as:
Casi nunca debers modificar el contenido de main.m en tus aplicaciones. Como ves en el cdigo, la funcin
main() sencillamente llama a la funcin NSApplicationMain() que ser la que cargar los objetos del
interfaz de usuario sobre un archivo nib.
No te asustes, te lo explico: Te familiarizars rpido con los archivos nib. Son los archivos que crea el Interface
Builder. Siendo ms claros:
main()
NSApplicationMain()
2010 AppleNeXtcom
Programar en Mac
Una vez que se ha cargado el archivo nib tu aplicacin simplemente esperar a que el usuario haga algo. Y
cuando el usuario haga click o escriba, tu cdigo ser llamado automticamente. Aunque por ahora no
sepamos nada ms, el funcionamiento es fcil de comprender, no? Vamos, que la funcin principal main()
siempre te llevar a otra llamada NSApplicationMain() que ser la que dirija el cotarro cuando el
usuario haga algo. Todo pasar por la funcin NSApplicationMain()pero slo reaccionar cuando el
usuario haga algo.
En las ltimas versiones de Xcode y iPhone SDK a los archivos NIB se les ha pasado a denominar archivos XIB,
por lo que en tu Xcode probablemente tendrs algn archivo .xib Vamos a verlo!
Busca en la carpeta Resources que aparece en la ventana de la izquierda:
Programar en Mac
Interface Builder
Si has seguido los pasos anteriores correctamente se abrirn en tu escritorio muchsimas ventanas por lo que
ser el momento de minimizar (u ocultar) el Xcode para no liarte con tantas cosas. En el men llamado
Interface Builder encontrars la opcin Hide Others (ocultar otras, en ingls).
Esta fantstica herramienta te permitir crear y editar los objetos del Interfaz de Usuario (el interfaz de
usuario es lo que se ve de una aplicacin): por ejemplo, botones o ventanas. Y adems grabar esos objetos
en un archivo. No slo colocars objetos sino que los relacionars entre ellos mismos y entre cada objeto y las
funciones de tu cdigo para que cuando el usuario haga algo con los objetos de la pantalla, tu cdigo se
ejecute.
2010 AppleNeXtcom
Programar en Mac
Quiz no te has dado cuenta, pero ya has aprendido muchsimo para Programar en Mac. Sabes usar el Xcode,
has creado tu primer proyecto y ests investigando el Interface Builder. Vas por buen camino...
Library
La ventana Library es el lugar donde podrs encontrar widgets que podrs arrastrar sobre el interfaz que
ests creando. Por ejemplo, si quieres un botn pues lo arrastras desde la ventana Library.
Ventana en blanco
La ventana en blanco representa una ventana de la clase NSWindow
que est dentro de tu archivo .xib y a medida que arrastres objetos sobre
tu ventana en blanco, stos se aadirn al archivo .xib
Una vez que hayas hecho algo con los objetos y hayas editado sus
caractersticas al grabar el archivo xib se quedarn todos
hermticamente dentro de l. Si ya te decamos que Xcode y Interface
Builder son herramientas fantsticas. Cuando la aplicacin se ejecuta el
archivo xib ser ledo y los objetos que contiene aparecern tambin.
Los objetos son empaquetados por el Interface Builder
y sern desempaquetados cuando la aplicacin se ejecute.
2010 AppleNeXtcom
Programar en Mac
Ahora vamos empezar a crear nuestro primer interfaz de usuario para nuestra aplicacin NumerosAleatorios.
Truco: para que sea ms fcil encontrarlo puedes usar el selector de la parte superior de la ventana y
encontrars los botones en la categora Views & Cells. Ah selecciona el botn que quieras, por ejemplo
Rounded Rect Button y arrstralo a tu Ventana en Blanco. Venga, que es fcil!
2010 AppleNeXtcom
Programar en Mac
Ahora haz doble click en el botn que acabas de arrastrar para cambiarle el nombre. Lo podemos llamar
calcular nmero aleatorio. Podrs ampliar el botn todo lo que quieras fcilmente y te quedar algo as:
Ahora vamos a seleccionar el botn creado y hacemos CopyPaste para crear uno nuevo que colocaremos
debajo del primero. Al nuevo botn lo podemos llamar Mostrar nmero.
Sencillo, verdad? Ahora seleccionaremos una etiqueta (Label) de campo para texto (Text Field) de la
Biblioteca y la arrastramos sobre nuestra ventana una vez ms. Ojo, no hablo del campo de texto en s, sino
de la etiqueta Label!!
2010 AppleNeXtcom
Programar en Mac
Para hacer la etiqueta de texto tan grande como los botones estrala hasta los lmites de la ventana. Vers que
aparecen unas lneas azules para ayudarte con las dimensiones y los tamaos. Estas lneas son las guas que
Apple pone a tu disposicin para que tu interfaz se parezca a los parmetros de Apple GUI Guidelines (es
decir, que se parezca a la imagen tpica de las aplicaciones del Mac OS X).
Cambia tambin el tamao de tu ventana para ajustarla a la imagen que t desees y que no quede
demasiado espacio en blanco.
Ahora vamos a centrarnos en los contenidos del interfaz y el manual se complicar un poco. Pero no te
preocupes, como ves lo vamos a ir tratando poco a poco.
Nos har falta utilizar el inspector, que es la ventana que tenemos a la derecha:
Selecciona la Etiqueta que acabamos de incorporar a nuestra Aplicacin.
En el Inspector seleccionamos el primer icono (Attributes)
Seleccionamos justificacin al centro.
2010 AppleNeXtcom
Programar en Mac
2010 AppleNeXtcom
Programar en Mac
La ventana Doc es una de las ms atractivas en la Programacin en Mac (por lo menos a m siempre me lo ha
resultado).
En ella podemos ver elementos que representan al men principal (main menu) y a la ventana de nuestra
aplicacin.
First Responder es un elemento ficticio pero que realiza una ficcin muy til. Ser explicada en
captulos posteriores.
Files Owner en este archivo xib es el objeto NSApplication para nuestra aplicacin. Este objeto
dirige los eventos de la cola de eventos y los coloca en la ventana apropiada. Tambin trataremos este
objeto ms adelante.
2010 AppleNeXtcom
Programar en Mac
Para crear la Clase debers regresar a Xcode. En el men archivo selecciona New File y se abrir la siguiente
ventana:
Programar en Mac
En Foo.h podrs aadir variables y mtodos a la clase que has creado. A las variables que apuntan hacia
otros objetos se les llama outlets y a los mtodos que se pueden accionar por parte del usuario se les llama
acciones (actions).
Leyendo esto, alguien que sepa de Objective-C podra decir tres cosas de estas lneas de cdigo:
1. Foo es una subclase de NSObject.
2. Foo tiene una variable: textField es un puntero hacia una parte de NSTextField
3. Foo tiene 2 mtodos: seed: y generate: (que son mtodos acciones).
NOTA: No te preocupes si an no entiendes ni palabra de todo esto. Lo veremos dentro de muy poco. Recuerda que simplemente
estamos creando una aplicacin desde cero y ms adelante entenders todo eso.
Date cuenta que los nombres de los mtodos y las variables comienzan por minscula pero al juntar varias palabras las siguientes se
ponen en mayscula para diferenciarlas. Esto es as por un acuerdo no escrito global entre programadores. Sin embargo, tambin se
ha convenido que los nombres de las Clases comiencen en mayscula (Foo.h)
2010 AppleNeXtcom
Programar en Mac
2010 AppleNeXtcom
Programar en Mac
En el Inspector seleccionamos la opcin Identity (cuyo icono es una i azul) y le asignamos la Class que
hemos creado, es decir, Foo.
Nota: si no apareciese Foo en la lista de Classes debers revisar los pasos anteriores. Probablemente has olvidado grabar
despus de modificar el cdigo de Foo.h
Conexiones
Gran parte de las programacin orientada a objetos (recuerda que de eso se trata Objective-C, y por tanto,
Cocoa y la Programacin en Mac).
Por eso, ahora lo que haremos es comenzar a conectar unos objetos con otros. Tcnicamente vamos a
establecer los outlets de nuestros objetos.
ATENCIN: Para conectar unos objetos con otros, usaremos control+arrastrar desde un objeto sobre otro.
2010 AppleNeXtcom
Programar en Mac
Como an no tenemos mucha idea, vamos a fiarnos del siguiente diagrama sobre qu objetos tenemos que
conectar:
NSButton
accin = seed:
NSButton
accin = generate:
Foo
-seed:
-generate:
-awakeFromNib
NSTextField
-setIntValue:
-setObjectValue:
S que esto puede asustarte un poco. Pero pronto lo entenders todo. Recuerda que es tu primera aplicacin
y todo esto slo debe servirte para que cuando lo expliquemos ya lo hayas visto con anterioridad.
Segn este diagrama lo que vamos a hacer es establecer que la variable textField apunte al objeto
NSTextField en el hueco donde ahora mismo pone Label.
Vamos all: Haz control+arrastrar (o arrastrar con botn derecho) desde Foo (en la ventana Doc) hasta la
etiqueta que hemos llamado Label.
2010 AppleNeXtcom
Programar en Mac
Ahora vamos a hacer que el outlet del botn Calcular nmero aleatorio apunte a Foo. Y adems queremos
que el botn siga el mtodo seed:
Haremos lo mismo. Control+Arrastrar desde el botn Calcular... hasta la instancia Foo. Y cuando el panel
aparezca deberemos seleccionar el mtodo seed: Haremos lo mismo con el botn Mostrar... pero
seleccionando en el panel generate:
Recuerda seleccionar cada botn antes de hacer la conexin. De lo contrario quiz no aparezca el panel con
las opciones seed: y generate:
2010 AppleNeXtcom
Programar en Mac
Muy bien! Ya lo has hecho!
Como has trabajado con Interface Builder slo tendrs que grabar y quedar todo guardado en el archivo xib.
Vuelta a Xcode
Probablemente seas nuevo en esto de la Programacin as que cuando terminemos este ejemplo haremos
una breve explicacin sobre todos estos trminos (Clases, mtodos, variables, instancias...). Todo esto
lo conocer bien alguien que ya sepa algo del Lenguaje C y del Objective-C, pero no te preocupes: t
tambin acabars sabindolo con mucha facilidad.
Por el momento simplemente haremos Copy&Paste de este cdigo (que corresponde a los mtodos) justo
antes de @end
- (IBAction)generate:(id)sender
{
// Generar un nmero del 1 al 100 ambos incluidos
int generated;
generated = (random() % 100) + 1;
NSLog(@"generated = %d", generated);
// Le decimos al textField que cambie lo que se est mostrando
[textField setIntValue:generated];
}
- (IBAction)seed:(id)sender
{
// Determinar el nmero aleatorio con la hora
srandom(time(NULL));
[textField setStringValue:@"Generator seeded"];
}
No te olvides de Guardar.
2010 AppleNeXtcom
Programar en Mac
Ya hemos terminado.
CONSEJOS: Pero antes de pulsar Build & Run te voy a recomendar que hagas algunos cambios en tus
preferencias que te sern de utilidad:
Entra en Preferences (Men Xcode > Preferences...):
- En General, asegrate de que tienes marcado Open counterparts in same editor (para pasar de .h
a .m con agilidad en un mismo editor.
- En Debugging, debers tener marcado Auto Clear Debug Console (para que se borre el registro de
errores tras cada proceso de debug). Debug, como ya dijimos antes, es eliminar errores de cdigo.
2010 AppleNeXtcom
Programar en Mac
Si tu cdigo tiene algn error, aparecer un mensaje del compilador en la parte izquierda del editor y en la
lnea errnea. Adems, abajo a la derecha aparecer Failed (fracasado) con la indicacin de dos mensajes de
error y una alerta (en este caso):
NOTA: A ti no debera aparecerte ningn error si has seguido todos los pasos. Yo he quitado la llave de la lnea anterior a @end para ponerte
el ejemplo del error, pero ahora mismo lo corrijo y guardo.
2010 AppleNeXtcom
Programar en Mac
Perfecto!! Ya funciona correctamente :)
2010 AppleNeXtcom