Aspectos Básicos de las Aplicaciones
Si usted decide que construir una aplicación iPhone nativa es el enfoque correcto para su proyecto, usted debería entender los conceptos básicos que subyacen al desarrollo iPhone. Escribir una aplicación iPhone nativa no es como escribir una aplicación Mac OS X. Aunque existen similitudes entre los dos procesos, desarrollar para iPhone OS requiere una integración mucho mas ajustada con el sistema general. Esta integración le abre paso a todo, desde sus prácticas de programación básicas hasta las tecnologías que usa. Las secciones siguientes describen algunas de las formas en las cuales su aplicación interactúa con iPhone OS y el como usted puede organizar su aplicación para tomar ventaja de ese ambiente.
El Ambiente del Tiempo de Ejecución
Las aplicaciones que usted crea residen lado a lado con las aplicaciones del sistema en la pantalla Home (Inicio) del usuario. Cuando el usuario hace clic sobre el icono de su aplicación, este se lanza y se convierte en la aplicación visible, llenando la pantalla entera con su contenido. Además del Kernel, los únicos otros programas que corren mientras su aplicación está corriendo son los demonios de fondo, necesarios para manejar los comportamientos críticos del sistema. Cuando el usuario presiona al botón Home o ejecuta una acción que requiriese el lanzamiento de una aplicación diferente, el sistema cierra su aplicación.
Leer el resto de esta entrada »
La Metáfora de la Mensajería
Cada paradigma de programación viene con su propia terminología y sus metáforas. Nunca mas cierto que con la programación orientada a objetos. Su jerga le invita a pensar sobre lo que sucede en un programa desde una perspectiva particular.
Existe una tendencia, por ejemplo, a pensar en objetos como “actores” y a atribuirles intenciones y habilidades humanas. Es tentador algunas veces el hablar sobre un objeto que “decide” que hacer en alguna situación, “preguntándole” a otros objetos alguna información, haciendo una “introspección” sobre si mismo para obtener información que le ha sido requerida, “delegando” responsabilidades a otro objeto, o “manejando” un proceso.
En vez de pensar en términos de funciones o métodos haciendo el trabajo, como lo haría con un lenguaje de programación procedimental, esta metáfora le pide pensar en los objetos como “ejecutores” de sus métodos. Los objetos no son contenedores pasivos para estado y comportamiento, por el contrario, son los agentes de la actividad del programa.
Leer el resto de esta entrada »
Polimorfismo
Polimorfismo
Como los ejemplos de arriba lo ilustran, los mensajes en Objective-C aparecen en las mismas posiciones sintácticas como las llamadas de función en estándar C. Pero, debido a que los métodos le “pertenecen” a un objeto, los mensajes se comportan de forma distinta a las llamadas de función.
En particular, un objeto puede ser operado solo por aquellos métodos que fueron definidos para él. Este no puede confundirlos con métodos definidos para otros tipos de objetos, incluso si otro objeto tiene un método con el mismo nombre. Esto significa que dos objetos pueden responder de forma diferente al mismo mensaje. Por ejemplo, cada tipo de objeto al que se le envió un menaje d i s p l a y podría mostrarse a si mismo de una forma única. Un Círculo y un Rectángulo responderían de forma diferente a instrucciones idénticas de rastrear al cursor.
Esta característica, referida como polimorfismo, juega un rol significativo en el diseño de programas orientados a objetos. Junto con el acoplamiento dinámico, este le permite escribir un código que podría aplicar a cualquier número de tipos diferentes de objetos, sin tener que elegir al momento de escribir el código el tipo de objetos que podrían ser. Ellos podrían ser incluso objetos que serán desarrollados posteriormente, por otros programadores que trabajen en otros proyectos. Si usted escribe un código que envía un mensaje d i s p l a y a una variable i d, cualquier objeto que tenga un método d i s p l a y es un receptor potencial.
Leer el resto de esta entrada »
Encontrar un Instrumento en la Biblioteca
Por defecto, la ventana Biblioteca muestra todos los instrumentos disponibles. Cada instrumento, sin embargo, pertenece a un grupo mayor, el cual identifica el propósito del instrumento y el tipo de data que recolecta. Usted puede usar los controles de selección de grupo en la parte superior de la ventana Biblioteca para seleccionar uno o más grupos y de esa forma limitar el número de instrumentos mostrados en la ventana. Cuando hay demasiados instrumentos en la Biblioteca, esta característica facilita el encontrar los instrumentos que desea.
Los controles de selección de grupo tienen dos configuraciones diferentes. En una configuración, la ventana Biblioteca muestra un menú emergente, del cual usted puede seleccionar un solo grupo. Si usted arrastra la barra de separación entre el menú emergente y el panel de instrumentos bajo él, entonces, el menú emergente cambia a una vista esquemática. En esta configuración, usted puede seleccionar múltiples grupos manteniendo presionado el botón Comando o la tecla Shift y seleccionando los grupos deseados.
La figura 2-2 muestra ambos, el modo estándar y el modo de esquema en la ventana Biblioteca. La ventana a la izquierda muestra el modo estándar, en el cual usted puede seleccionar un solo grupo usando el menú emergente. La ventana a la derecha muestra la vista de esquema, en la cual usted puede seleccionar múltiples grupos y manejar sus propios grupos hechos a medida.
Leer el resto de esta entrada »
Características de una Aplicación Cocoa (cont.)
• Interacción de Sistema-En Mac OS X, Cocoa le da a su aplicación formas de interactuar con (y usar los servicios de) el sistema de archivos, el espacio de trabajo, y otras aplicaciones. En iPhone OS, usted puede pasar URLs de aplicaciones del sistema para lograr que manejen recursos referenciados (por ejemplo, correo electrónico o sitios Web).
• Desempeño-Para mejorar el desempeño de su aplicación, Cocoa provee soporte programático para carga lenta de recursos multihilo, procesadores en tiempo de reposo, manejo de memoria y manipulación de corrida de ciclo.
• Internacionalización-Cocoa provee una arquitectura rica para internacionalizar aplicaciones, haciendo posible para usted el soportar recursos localizados como texto, imágenes, e incluso interfaces de usuario. El enfoque Cocoa está basado en listas de usuario de lenguajes preferidos y pone recursos localizados en paquetes de la aplicación. Basado en las configuraciones que encuentra, Cocoa selecciona automáticamente el recurso localizado que mejor reúne las preferencias del usuario. También provee herramientas e interfaces programáticas para generar y acceder a cadenas localizadas. Por otra parte, la manipulación de texto en Cocoa está basada por defecto en Unicode, y es así un activo para la internacionalización.
Leer el resto de esta entrada »
Aplicaciones Utilitarias
Aplicaciones Utilitarias desempeña una tarea deseada que requiera una entrada relativamente pequeña por parte del usuario. Los usuarios abren aplicaciones utilitarias para obtener un resumen rápido de información o para desempeñar una tarea simple sobre un pequeño numero de objetos. La interfaz para una aplicación utilitaria debería ser visualmente atractiva y organizada para que sea más sencillo el localizar la información de forma más rápida. La aplicación Clima (Figura 1-2) es un ejemplo de una aplicación utilitaria, como lo es la aplicación Stocks.
Figura 1-2 Una Aplicación Utilitaria
.jpg)
Leer el resto de esta entrada »
El Modelo de Objeto
La clave de la programación orientada a objetos es combinar estado y comportamiento –data y operaciones en la data- en una unidad de alto nivel, un objeto, y brindarle soporte de lenguaje. Un objeto es un grupo de funciones relacionadas y una estructura de data que sirve a esas funciones. Las funciones son conocidas como los métodos del objeto, y los campos de su estructura de data son sus variables de instancia. Los métodos envuelven las variables de instancia y las esconden del resto del programa, como lo muestra la figura 3-1:
Figura 3-1 Un Objeto
Leer el resto de esta entrada »
Mandando mensajes a nil
En Objetive-C, es valido mandar un mensaje a nil-este simplemente no tiene efecto en un tiempo de ejecución. Hay varios patrones en Cocoa que toman ventaja de este hecho. El valor que retorna de un mensaje enviado a n i l también puede ser valido:
• Si el método regresa un objeto, cualquier tipo de puntero, cualquier escalar entero menor o igual a sizeof(void*), un float, un double, un long double, o un long long, entonces un mensaje enviado a n i l regresa 0.
• Si el método regresa un STRUCT, como es definido por la Guía para Llamado de Función ABI Mac OS X para ser regresado en registros, después un mensaje enviado a n i l regresa 0.0 para cada campo en la estructura de la data. Otros tipos de data STRUCT no será llenados con ceros.
• Si el método retorna cualquier otra cosa distinta a tipos de valores ya mencionados el valor de retorno de un mensaje enviado a n i l es indefinido.
Id an0bjectMaybeNil = nil;
// this is valid
If ([an0bjectMaybeNil methodThatReturnsADouble] = = 0.0)
{
// implementation continues…
}
Leer el resto de esta entrada »
Añadir y Configurar Instrumentos
La aplicación Instruments usa instrumentos para recolectar data y mostrarle esa data al usuario. Aunque no existe un límite teórico para el número de instrumentos que usted puede incluir en un documento, la mayoría de estos contienen menos de diez por razones de desempeño. Usted puede incluso incluir el mismo instrumento varias veces, con cada instrumento configurado para recavar data de diferentes procesos en el sistema.
Instruments viene con un amplio rango de instrumentos incorporados cuya función es juntar data específica de uno o más procesos. La mayoría de estos instrumentos requieren de poca o ninguna configuración para ser usados. Usted simplemente los añade a su documento de búsqueda y comienza a juntar la data generada. Usted puede, de igual forma, crear instrumentos a la medida, los cuales le proveen un amplio rango de opciones para colectar la data.
Este capitulo se enfoca en como añadir instrumentos preexistentes a su documento de búsqueda y como configurarlos para ser usados. Para información sobre como crear instrumentos a la medida, ver “Crear Instrumentos a la Medida con DTrace”.
Leer el resto de esta entrada »
Características de una Aplicación Cocoa
En Mac OS X es posible crear una aplicación Cocoa añadiendo una sola línea de código. Construya un nuevo proyecto de aplicación Cocoa usando Xcode y luego construya el proyecto. Eso es todo. Desde luego, esta aplicación no hará mucho, o por lo menos mucho que sea interesante. Pero esta aplicación extremadamente simple se lanza cada vez que se hace doble clic, muestra su icono en la base (Dock), muestra su menú y su ventana principal (titulada “Ventana”), se esconde cuando se le indica, se comporta apropiadamente cuando otras aplicaciones están corriendo, y se cierra cuando se le indica. Usted puede mover, modificar el tamaño, minimizar y cerrar la ventana. Usted puede incluso imprimir el vació contenido en la ventana.
Imagine lo que puede podría hacer con un pequeño código.
Nota para iPhone OS: Las características y el comportamiento de una aplicación en iPhone OS son considerablemente diferentes a las de una aplicación Mac OS X. Debido a que una aplicación corre en un ambiente mucho mas limitado en iPhone OS, este solo puede mostrar una ventana de contenido a la vez, debe guarda su estado con frecuencia (ya que no puede esperarse que corra en el fondo), y generalmente tiene un conjunto de capacidades mas limitadas que una aplicación Mac OS X. Para discusiones sobre las capacidades y restricciones en iPhone OS, ver Guía de Programación iPhone OS.
Leer el resto de esta entrada »

.jpg)

