Objective-C. Curso práctico para programadores Mac OS X, iphone y ipad. Fernando López Hernández

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Objective-C. Curso práctico para programadores Mac OS X, iphone y ipad. Fernando López Hernández"

Transcripción

1 Objective-C Curso práctico para programadores Mac OS X, iphone y ipad Fernando López Hernández

2 Objective-C. Curso práctico para programadores Mac OS X, iphone y ipad Fernando López Hernández ISBN: EAN: Copyright 2012 RC Libros RC Libros es un sello y marca comercial registrados Objective-C. Curso práctico para programadores Mac OS X, iphone y ipad. Reservados todos los derechos. Ninguna parte de este libro incluida la cubierta puede ser reproducida, su contenido está protegido por la Ley vigente que establece penas de prisión y/o multas a quienes intencionadamente reprodujeren o plagiaren, en todo o en parte, una obra literaria, artística o científica, o su transformación, interpretación o ejecución en cualquier tipo de soporte existente o de próxima invención, sin autorización previa y por escrito de los titulares de los derechos de la propiedad intelectual. RC Libros, el Autor, y cualquier persona o empresa participante en la redacción, edición o producción de este libro, en ningún caso serán responsables de los resultados del uso de su contenido, ni de cualquier violación de patentes o derechos de terceras partes. El objetivo de la obra es proporcionar al lector conocimientos precisos y acreditados sobre el tema tratado pero su venta no supone ninguna forma de asistencia legal, administrativa ni de ningún otro tipo, si se precisase ayuda adicional o experta deberán buscarse los servicios de profesionales competentes. Productos y marcas citados en su contenido estén o no registrados, pertenecen a sus respectivos propietarios. RC Libros Calle Mar Mediterráneo, 2. Nave SAN FERNANDO DE HENARES, Madrid Teléfono: Fax: Correo electrónico: info@rclibros.es Internet: Diseño de colección, cubierta y pre-impresión: Grupo RC Impresión y encuadernación: Depósito Legal: Impreso en España ( )

3 PREFACIO Cuando Steve Jobs abandonó Apple, creó una empresa llamada NeXT. El objetivo de NeXT era crear un sistema operativo técnicamente superior a los que entonces existían en el mercado, al que llamaron NeXTSTEP. Objective-C es el lenguaje que eligió la empresa NeXT para su sistema operativo. Apple compró NeXTSTEP cuando Steve Jobs volvió a Apple, y ha conservado el lenguaje Objective-C como lenguaje principal para el desarrollo de aplicaciones. Apple ha evolucionado el antiguo sistema operativo NeXTSTEP para cubrir dos áreas de mercado. La primera área es Mac OS X, el sistema operativo para ordenadores de escritorio, como son los portátiles MacBook o los ordenadores de mesa Mac mini, imac o Mac Pro. La segunda área es ios, el sistema operativo para dispositivos móviles de Apple tales como iphone, ipad o Apple TV. Mac OS X y ios comparten un modelo de programación fuertemente orientado a objetos, y que utiliza como base el lenguaje de programación Objective-C. Objective-C 2.0 es una extensión a Objective-C para proporcionar nuevas características. Normalmente, este libro utiliza el término Objective-C para referirse tanto a las características originales como a estas nuevas características.

4 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD La similitud que existe entre Mac OS X y ios hace posible escribir programas que compilan en ambos sistemas. Este libro aprovecha esta similitud para enseñar a programar en Objective-C, y recalca los puntos donde la forma de programar ambos sistemas operativos difiere. La experiencia de más de 10 años al frente de MacProgramadores.org del autor de este libro dice que Objective-C no es un lenguaje que se suela escoger como primer lenguaje de programación. Lenguajes como C++ o Java son los lenguajes más elegidos por los recién llegados al mundo de la programación. Los programadores que se interesan por el desarrollo de aplicaciones Mac OS X o ios suelen ser profesionales de la programación con experiencia en el desarrollo de aplicaciones en otros entornos. La entrada de Apple en el mundo de los sistemas operativos móviles ha incrementado significativamente la llegada de este tipo de profesionales. Esta observación hace posible diseñar un libro adaptado a programadores que ya conocen los conceptos básicos comunes a todos los lenguajes de programación, y que no quieren dedicar su tiempo a volver a leer otro libro de introducción a la programación. Este libro está pensado para que estos programadores aprendan a desarrollar aplicaciones Mac OS X o ios rápidamente. Para facilitar aún más el aprendizaje, este libro también incluye comparaciones entre aspectos Objective-C y la forma en que estos aspectos se implementan en C++ y en Java. Creemos que esta forma de aprendizaje ágil animará a muchos programadores a elegir este libro como su libro de referencia para introducirse en el apasionante mundo de la manzana. Qué contiene este libro Este libro tiene dos partes. La primera parte estudia en detalle el lenguaje Objective-C. El lenguaje es la base para poder empezar a estudiar la extensa librería de clases y funciones que proporcionan tanto Mac OS X como ios. La segunda parte del libro estudia Foundation Framework, una librería con el conjunto de funciones y clases básicas que comparten Mac OS X y ios. Foundation Framework proporciona funcionalidad para el manejo de ficheros, los procesos e hilos, el runtime de configuración sistema, la programación multihilo y sus técnicas de sincronización, la programación en red y los objetos distribuidos. Foundation Framework también se basa en otra librería llamada Core Foundation, que también se estudia en este libro. Al acabar este libro, el lector conocerá todos los detalles del lenguaje Objective-C, y tendrá una base sólida sobre el manejo de la librería Foundation Framework. En XX RC Libros

5 PREFACIO este momento, cada programador tendrá que decidir si sus objetivos profesionales le exigen centrarse en estudiar las librerías de Mac OS X, o las de ios. Conocer la librería Foundation Framework es una inestimable ayuda antes de afrontar el aprendizaje del extenso grupo de librerías que proporciona Mac OS X o ios. Cocoa es el nombre que agrupa a las librerías de programación propias de Mac OS X. Cocoa Touch es el nombre que agrupa a las librerías para desarrollar aplicaciones para ios. Acerca del autor El autor de este libro es un entusiasta del mundo de la programación Apple. Su interés despertó cuando en el año 2000 Apple sacó al mercado la primera versión de su sistema operativo Mac OS X. En febrero de 2001, inició el sitio web MacProgramadores.org donde ha moderado foros, publicado numerosos tutoriales, reportajes, trucos y noticias relacionados con la programación de Mac OS X. Con la llegada de iphone añadió la programación de ios. Fernando López Hernández nació en 1973, tiene el título de Doctor Europeo en Ingeniería Informática y Telecomunicación. Profesionalmente ha trabajado en diversos laboratorios de investigación en España, Reino Unido y Austria, ha trabajado en varios proyectos de investigación financiados por la Unión Europea, y tiene un considerable número de publicaciones científicas. Asimismo, ha trabajado impartiendo cursos, tanto a nivel universitario como a nivel profesional. Para que el lector pueda consultar sus dudas y reportar posible erratas, el autor ha habilitado un foro en Agradecimientos Este libro ha llegado a ser una realidad con el apoyo de dos personas. Una de ellas ha sido Carolina Fernández Arias, mi mujer, que no solo ha prescindido de mí mientras lo escribía, sino que ha revisado el texto de este libro en busca de mejoras. La otra persona ha sido Alberto Corbi Bellot, mi amigo y compañero de admiración por las tecnologías Apple. Muchas de las nuevas características de las herramientas de desarrollo no estarían descritas en este libro sin su revisión. RC Libros XXI

6 PARTE I: EL LENGUAJE OBJECTIVE-C

7 EMPEZANDO A PROGRAMAR CON OBJECTIVE-C OBJETIVOS DEL CAPÍTULO Este primer capítulo de naturaleza introductoria empieza describiendo los entornos donde podemos programar con Objective-C, y después describe las herramientas necesarias para crear aplicaciones. Antes de que en el Capítulo 2 se adentre en los conceptos del lenguaje, creemos que será útil para el lector familiarizarse con el uso de las herramientas de programación. Con este fin, este capítulo empieza enseñando al lector cómo crear sencillos programas, y describe la forma de compilar y enlazar estas aplicaciones. El capítulo empieza describiendo cómo compilar aplicaciones Objective-C desde la consola, utilizando Clang y las herramientas de programación de GNU. En la segunda parte de este capítulo se estudia cómo, usando la herramienta gráfica Xcode, podemos mejorar la productividad del programador. ENTORNOS DE PROGRAMACIÓN Objective-C procede de los tiempos de NeXTSTEP, el sistema operativo en el que se basa Mac OS X. A su vez ios es una evolución de Mac OS X para adaptarlo a dispositivos móviles. ios es el nombre que Apple ha dado al sistema operativo de dispositivos como iphone, ipad, ipod Touch y Apple TV. Objective-C es el lenguaje principal y nativo para desarrollo de aplicaciones en todos estos sistemas operativos. Una vez que el programador de aplicaciones Mac OS X o ios aprende el lenguaje Objective-C, su siguiente paso será empezar a conocer la extensa librería de clases y funciones que proporcionan estos sistemas operativos. Estas librerías se pueden dividir, grosso modo, en tres grandes grupos:

8 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD Foundation Framework. Son un conjunto de clases de utilidad que permiten representar estructuras de datos complejas (arrays, listas, diccionarios, etc.). Estas clases también incluyen otras funcionalidades como el acceso a red, la gestión de procesos e hilos, el runtime de configuración del sistema, la programación multihilo y las técnicas para sincronizar estos hilos. La principal característica de estas clases es que, en su mayoría, son comunes a Mac OS X y ios. Esto se debe a que no incluyen las clases relacionadas con la parte que más cambia: la interfaz gráfica de usuario. Cocoa. Aquí se incluyen las clases propias de Mac OS X. Estas clases están relacionadas con la interfaz gráfica, la impresión, el acceso a audio y vídeo, y todos los demás servicios que proporciona Mac OS X. Tradicionalmente, Apple también ha utilizado el término Aplicación Kit Framework (AppKit Framework) para referirse a estas clases. Dentro del Cocoa encontramos otros kits de desarrollo especializados en determinadas tareas como puedan ser Image Kit, QuickTime Kit, Apple Scripting Kit, etc. Cocoa Touch. Aquí se incluyen las clases propias de la interfaz de usuario de ios. Las clases de Cocoa están pensadas para manejar aplicaciones mediante un teclado y un ratón, con lo que Apple tuvo que crear un conjunto de librerías distintas, llamado Cocoa Touch, para poder manejar dispositivos táctiles. La principal librería que encontramos en Cocoa Touch es UI Kit, el kit que permite desarrollar los elementos de la interfaz gráfica de las aplicaciones ios. Otros kits que encontramos son, por ejemplo, Map Kit para gestionar mapas Google, iad Kit para gestionar los banners de publicidad, Game Kit para juegos o Audio Unit Kit para gestionar el sonido. La Figura 1.1 muestra un resumen de las capas software de programación tanto de Mac OS X como de ios. Observe que las partes de más alto nivel son programables en Objective-C, mientras que el bajo nivel (Core Services) se programa en C. Esta organización permite alcanzar mayor productividad a los programadores de alto nivel mediante el uso de la programación orientada a objetos. Como se explicará en el Capítulo 2, Objective-C es una extensión de C para aprovechar las ventajas de la programación orientada a objetos. Observe que hay librerías Objective-C (por ejemplo, Quick Time Kit o Foundation Framework) que tienen su correspondiente librería C (QuickTime y Core Foundation, en el ejemplo anterior). En este caso, las llamadas a las librerías Objective-C suelen estar mapeadas directamente; es decir, envuelven a su correspondiente llamada a librería C. Otra API no mostrada en esa figura es Carbon, la antigua API de programación de Mac OS Classic (Mac OS 9 e inferiores). Carbon es un API programable en C y de transición, que Mac OS X integra para mantener compatibilidad con aplicaciones 4 RC Libros

9 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C antiguas. El fin último de Carbon es desaparecer, y de hecho, ios ya no incluye esta API. Figura 1.1: Capas software de programación en Mac OS X y ios En este libro vamos a centrarnos en estudiar el lenguaje Objective-C. También estudiaremos algunas clases de Foundation Framework. Las clases de Cocoa y Cocoa Touch se dejan para otros libros que usted podrá leer, una vez que domine el lenguaje. COMPILANDO CON LAS GCC Las GCC (GNU Compiler Collection) son un conjunto de herramientas que proporciona GNU para programar en varios lenguajes y plataformas. Mac OS X y ios se apoyan en estas herramientas para realizar las tareas de compilación y enlazado de sus aplicaciones. Para mejorar la productividad y la facilidad de uso de estas herramientas, Apple creó Xcode, un IDE (Integrated Development Environment) que permite realizar de forma gráfica las tareas comunes de programación. Xcode hace llamadas a las GCC para realizar las tareas de compilación y enlazado de forma transparente al programador. RC Libros 5

10 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD En esta sección veremos cómo utilizar las herramientas de programación de GNU para compilar y enlazar aplicaciones Objective-C desde el terminal 1. Al final del capítulo veremos cómo se puede utilizar Xcode para mejorar la productividad del programador. En este capítulo vamos a pasar por encima los detalles relativos al lenguaje, con lo que si no conoce Objective-C puede que muchos aspectos de lenguaje le resulten confusos. En el Capítulo 2 introduciremos el lenguaje a nivel conceptual, y en el Capítulo 3 empezaremos a detallar todos los aspectos del lenguaje con el nivel de detalle que se requiere para su correcta comprensión. Crear un ejecutable Debido a que Objective-C es una extensión al lenguaje C, un programa C compila en Objective-C sin necesidad de cambios. El Listado 1.1 muestra un programa básico Objective-C que solo usa la sintaxis de C, excepto por dos aspectos: /* holamundo.m */ #import <stdio.h> #import <stdlib.h> int main() { printf("hola desde Objective-C\n"); return EXIT_SUCCESS; } Listado 1.1: Programa Objective-C básico El primer aspecto es que, en vez de usar la directiva del preprocesador #include, hemos usado la directiva del preprocesador #import. Ambas directivas incluyen un fichero dentro de otro fichero, pero a diferencia de #include, la directiva #import asegura que el fichero incluido no se incluya más de una vez. En consecuencia, en los ficheros de cabecera incluidos con #import no es necesario hacer un control de inclusiones con la directiva del preprocesador #ifdef, tal como acostumbra a hacerse en C y C++. 1 Si, al final de este capítulo, cree que todavía no conoce lo suficiente estas herramientas, encontrará una descripción a fondo de estas herramientas en el tutorial "Compilar y depurar aplicaciones con las herramientas de programación GNU", publicado online en MacProgramadores.org. 6 RC Libros

11 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C La segunda diferencia está en que la extensión de los ficheros Objective-C es.m. Esta es la extensión que permite al comando gcc saber que se trata de un programa Objective-C. Para compilar y ejecutar este programa, bastaría con ejecutar los siguientes comandos: $ gcc holamundo.m -o holamundo $./holamundo Hola desde Objective-C Framework y runtime de Objective-C Para programar en Objective-C disponemos de dos frameworks distintos: el primer framework es el framework de clases de GNU, que son un conjunto de clases inicialmente desarrollado por NeXTSTEP para Objective-C, que fueron abiertas bajo licencia GNU, y cuya clase base es la clase Object. El segundo es el framework de clases de NeXTSTEP, que es el conjunto de clases que desarrolló NeXTSTEP en 1994, cuya clase base es NSObject, y que actualmente es el usado por Mac OS X y ios para implementar Cocoa y Cocoa Touch. Apple no ha abierto el código fuente del framework de clases de NeXTSTEP. Actualmente, el framework de clases de GNU ha dejado de actualizarse, y GNU también está haciendo una implementación de código fuente abierto del nuevo framework de clases de NeXTSTEP, llamado GNUStep. Esta implementación también utiliza la clase base NSObject, así como el resto de clases del framework de NeXTSTEP, pero aún no está terminada. Para usar el framework de clases de GNU, debemos enlazar con el fichero libobjc.a usando la opción del enlazador -lobjc. Por el contrario, para enlazar con el framework de clases de NeXTSTEP debemos enlazar con el framework Foundation.framework usando la opción del enlazador -framework Foundation. Lógicamente, podemos enlazar con ambos frameworks de clases, proporcionando ambas opciones durante el enlazado. Es importante no confundir los frameworks de Objective-C con los runtime de Objective-C. Los frameworks de Objective-C son las librerías de clases (cuya clase base es Object o NSObject, respectivamente). Los runtime de Objective-C son un conjunto de funciones de librería, escritas en C, en las que se apoyan las clases de Objective-C para alcanzar el potencial dinámico característico de este lenguaje. Por defecto, Mac OS X usa el runtime de NeXTSTEP, el cual actualmente da soporte tanto RC Libros 7

12 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD al framework de clases de GNU como al framework de clases de NeXTSTEP. Podemos pedir usar el runtime de GNU usando la opción del enlazador -fgnu-runtime, pero en este caso solo tendremos acceso al framework de clases de GNU. En este último caso deberemos enlazar con la librería libobjc-gnu.a, usando la opción -lobjcgnu. Programar con el framework de clases de GNU En esta sección, vamos a ver cómo programar usando el framework de clases de GNU. En la siguiente sección, veremos las diferencias cuando usamos el framework de clases de NeXTSTEP. Normalmente, cada clase Objective-C consta de dos ficheros: uno con la extensión.h que contiene la interfaz, y otro con la extensión.m que contiene la implementación. El Listado 1.2 y el Listado 1.3 muestran, respectivamente, un ejemplo de interfaz e implementación de una clase Objective-C llamada Saludador. Observe que estamos usando como clase base la clase Object situada en el fichero de cabecera <objc/object.h>. /* Saludador.h */ #import Saludador : Object { char* saludo; } - init; - (void)setsaludo:(char*)unsaludo; - (void)setsaludo:(char*)unsaludo y:(char*)unacoletilla; - Listado 1.2: Interfaz de una clase Objective-C con el framework de clases de GNU /* Saludador.m */ #import "Saludador.h" #import <stdio.h> #import <stdlib.h> #import Saludador - init { if ((self = [super init])) { saludo = "Hola mundo"; } return self; } - (void)setsaludo:(char*)unsaludo { 8 RC Libros

13 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C saludo = unsaludo; } - (void)setsaludo:(char*)unsaludo y:(char*)unacoletilla { saludo = malloc(strlen(unsaludo)+strlen(unacoletilla)+1); strcpy(saludo,unsaludo); strcat(saludo,unacoletilla); } - (void)saluda { printf("%s\n",saludo); Listado 1.3: Implementación de una clase Objective-C con el framework de clases de GNU Una vez tengamos definida la clase, para instanciar y usar un objeto de esta clase, necesitamos un programa principal como el del Listado 1.4. /* pidesaludo.m */ #import <stdlib.h> #import "Saludador.h" int main() { Saludador* s = [[Saludador alloc] init]; [s saluda]; [s setsaludo: "Hola de nuevo"]; [s saluda]; [s setsaludo: "Hola buenos dias," y: "encantado de verle"]; [s saluda]; [s free]; return EXIT_SUCCESS; } Listado 1.4: Programa que usa un objeto Objective-C del framework de clases de GNU Al estar usando el framework de clases de GNU, el programa puede ser compilado y enlazado con los siguientes comandos: $ gcc -c Saludador.m $ gcc -c pidesaludo.m $ gcc Saludador.o pidesaludo.o lobjc arch i386 -o pidesaludo O bien realizar los tres pasos a la vez con el siguiente comando: $ gcc pidesaludo.m Saludador.m lobjc arch i386 -o pidesaludo Observe que hemos ejecutado gcc con la opción arch i386. Esto se debe a que Apple ha dejado de mantener este conjunto de clases, las cuales no compilan en 64 bits (x86_64), que es la arquitectura por defecto desde Mac OS X Para usar el RC Libros 9

14 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD framework de clases de GNU, tenemos que compilar para una plataforma en la que se soporte. En concreto, el framework de clases de GNU está soportado en i386 (Intel de 32 bits) y ppc970 (PowerPC). Las arquitecturas armv6 y armv7 de ios y ppc64 (PowerPC de 64 bits) tampoco soportan el framework de clases de GNU. Dado que Apple ha dejado de dar soporte al framework de clases de GNU, en el resto de este libro nos vamos a limitar a estudiar el framework de clases de NeXTSTEP. Programar con el framework de clases de NeXTSTEP El Listado 1.5, el Listado 1.6 y el Listado 1.7 muestran cómo implementar y usar la clase Saludador de la sección anterior, pero enlazando con el framework de clases de NeXTSTEP. La principal diferencia está en que ahora derivamos de NSObject, en vez de derivar de Object. La segunda diferencia está en que importamos el fichero <Foundation/NSObject.h>, en vez de importar el fichero <objc/object.h>. /* Saludador.h */ #import Saludador : NSObject { char* saludo; } - init; - (void)setsaludo:(char*)unsaludo; - (void)setsaludo:(char*)unsaludo y:(char*)unacoletilla; - Listado 1.5: Interfaz de una clase Objective-C con el framework de clases de NeXTSTEP /* Saludador.m */ #import "Saludador.h" #import <stdio.h> #import <stdlib.h> #import Saludador - init { if ((self = [super init])) { saludo = "Hola mundo"; } return self; } - (void)setsaludo:(char*)unsaludo { saludo = unsaludo; } - (void)setsaludo:(char*)unsaludo y:(char*)unacoletilla { saludo = malloc(strlen(unsaludo)+strlen(unacoletilla)+1); strcpy(saludo,unsaludo); 10 RC Libros

15 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C strcat(saludo,unacoletilla); } - (void)saluda { printf("%s\n",saludo); Listado 1.6: Implementación de una clase Objective-C con el framework de clases de NeXTSTEP /* pidesaludo.m */ #import <stdlib.h> #import "Saludador.h" int main() { Saludador* s = [[Saludador alloc] init]; [s saluda]; [s setsaludo: "Hola de nuevo"]; [s saluda]; [s setsaludo: "Hola buenos dias," y: "encantado de verle"]; [s saluda]; [s release]; return EXIT_SUCCESS; } Listado 1.7: Programa que usa un objeto Objective-C con el framework de clases de NeXTSTEP Ahora, para compilar y ejecutar el programa usamos los siguientes comandos: $ gcc Saludador.m pidesaludo.m -framework Foundation -o pidesaludo $./pidesaludo CLANG, LLVM Y LLDB El compilador de GCC consta de un front-end y de varios back-ends. El back-end permite generar instrucciones en los distintos lenguajes y arquitecturas. El front-end de GCC es el comando gcc, y las distintas opciones de línea de comandos que soporta. LLVM (Low-Level Virtual Machine) es un nuevo conjunto de back-ends para distintos lenguajes y arquitecturas que presenta varias ventajas técnicas respecto a los back-ends tradicionales de GCC. En 2005, Apple contrató a miembros del equipo de desarrollo de LLVM para trabajar en mejorar estos back-ends. La idea inicial era mantener el front-end de GCC y reemplazar sus back-ends. LLVM-GCC es el nombre que recibió este proyecto. RC Libros 11

16 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD El intento de combinar LLVM con GCC dio lugar a varios problemas: Apple usa principalmente Objective-C, pero el lenguaje Objective-C tiene poca prioridad para los desarrolladores de GCC. El front-end de GCC no se integra bien con las funcionalidades interactivas que los ingenieros de Apple querían meter en Xcode. Apple no está de acuerdo con algunas restricciones de patentes que introduce la licencia GPLv3, bajo la que se distribuye GCC 4.3. Estos problemas hicieron que en 2007 Apple decidiera escribir un nuevo front-end al que llamaron Clang. Clang es un front-end que es en gran parte similar al frontend de GCC. El comando que lo implementa es clang y es una alternativa al comando gcc de las GCC. Algunas diferencias entre ellos son: La mayoría de las opciones del comando clang son similares a las del comando gcc. Con el tiempo, es posible que estas opciones diverjan cada vez más. Clang solo soporta los lenguajes C99, C++0x, C++ y Objective-C. GCC, además de estos lenguajes, soporta Java, Fortran y Ada. Clang y LLVM se distribuyen bajo la licencia abierta de la Universidad de Illinois. GCC se distribuye bajo licencia GNU. La licencia abierta de la Universidad de Illinois es parecida a la licencia BSD, en el sentido de que no exige distribuir el código fuente con las modificaciones que se hagan al compilador. Aunque Apple sigue distribuyendo el comando llvm-gcc, el objetivo es que en el futuro solo se use el comando clang. GCC es la última versión de GCC con licencia GPLv2, y posiblemente la última versión de GCC que incluyan las herramientas de desarrollo de Apple. Las principales ventajas que indica Apple para el front-end Clang frente a GCC son: Durante el proceso de compilación, Clang mantiene más información sobre el código fuente original que GCC. Esto permite mapear más fácilmente los errores en el código fuente. Clang permite una compilación incremental más sencilla y eficiente, la cual se puede usar para reducir el tiempo de compilación de Xcode cuando se hacen pequeños cambios en el código fuente. Por su parte, aunque GCC soporta la compilación incremental, está pensado para seguir un ciclo más tradicional, basado en compilar-enlazar-ejecutar. Clang permite indexar los símbolos del código fuente. Estos símbolos son usados por Xcode para facilitar al usuario la navegación por el código fuente. 12 RC Libros

17 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C Clang permite compilar en varios hilos paralelos, reduciendo el tiempo de compilación en máquinas multi-core. Las principales ventajas que indican los desarrolladores de GCC frente a Clang son: GCC soporta los lenguajes Java, Fortran y Ada, que Clang no soporta. En tests realizados en 2011, aunque Clang compila más rápido que GCC, GCC genera código más optimizado que Clang. El proyecto LLVM fue iniciado en la Universidad de Illinois bajo la dirección de Vikram Adve y Chris Lattner. En 2005, Apple contrató a Chris Lattner como líder del equipo de desarrollo de LLVM. La principal novedad de LLVM, frente a los back-ends de GCC, es que genera una representación intermedia llamada IF (Intermediate Form). Esta representación intermedia permite obtener errores y warnings más precisos, y optimizar más fácilmente el código fuente. Durante la fase de enlazado, esta representación intermedia se convierte en instrucciones del ensamblador para la máquina destino. LLVM se distribuye con un nuevo depurador llamado lldb. El comando lldb es similar al comando gdb de GCC, pero permite aprovechar mejor la información que genera LLVM 2. Compilando con Clang Actualmente, Xcode permite elegir entre usar Clang o GCC para compilar aplicaciones Mac OS X, aunque el front-end por defecto es Clang. En esta sección vamos a ver cómo se usa Clang para compilar aplicaciones. También veremos que las opciones de línea de comando de clang son muy parecidas a las de gcc. En el resto de este libro usaremos clang para compilar nuestras aplicaciones. Para compilar el ejemplo del Listado 1.1 con Clang, en vez de hacer: $ gcc holamundo.m -o holamundo Hacemos: 2 El comando lldb se encuentra en la ruta /Developer/usr/bin/lldb. Si quiere usar este comando desde el terminal, deberá añadir su directorio al PATH. RC Libros 13

18 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD $ clang holamundo.m -o holamundo Análogamente, el ejemplo del Listado 1.2, del Listado 1.3 y del Listado 1.4 se compilaría con el siguiente comando: $ clang pidesaludo.m Saludador.m -lobjc -arch i386 -o pidesaludo O el ejemplo del Listado 1.5, del Listado 1.6 y del Listado 1.7 con el siguiente comando: $ clang Saludador.m pidesaludo.m -framework Foundation -o pidesaludo Crear una librería estática o dinámica Al igual que con C o C++, con Objective-C también podemos crear una librería de enlace estático o dinámico, que luego usemos desde otros programas. Por ejemplo, para crear una librería de enlace estático que incluya la clase Saludador del Listado 1.6, podemos generar el fichero de librería con el siguiente comando: $ ar -r libsaludos.a Saludador.o ar: creating archive libsaludos.a Una vez creada la librería de enlace estático, podemos enlazar con ella desde el programa del Listado 1.7 ejecutando el siguiente comando: $ clang pidesaludo.m libsaludos.a -framework Foundation -o pidesaludo Si lo que queremos es crear una librería de enlace dinámico, podemos crear la librería de enlace dinámico, y enlazar el programa principal del Listado 1.7 con la librería, ejecutando los siguientes comandos: $ clang -dynamiclib Saludador.o -framework Foundation -o libsaludos.dylib $ clang pidesaludo.m libsaludos.dylib -framework Foundation -o pidesaludo Compilación cruzada para ios Aunque los programas anteriores compilan directamente para Mac OS X, si queremos compilar este programa para ios, necesitaremos conocer más a fondo Clang. 14 RC Libros

19 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C Ya hemos visto que la opción -arch permite indicar la plataforma para la que queremos generar el binario. Actualmente, ios soporta dos opciones: armv6 para iphone 3G e inferiores. armv7 para ipad y iphone 3GS y superiores. La opción armv6 es la opción más segura, ya que todos los dispositivos ios ejecutan los programas compilados con esta opción. Si nuestra aplicación es solo para ipad podemos usar la opción armv7 para que el compilador genere nuevas instrucciones máquina que mejoran ligeramente el rendimiento. Sin embargo, esta opción no es suficiente para que Clang genere una aplicación que pueda ejecutar en ios. Las diferencias entre Mac OS X y ios son suficientes como para que Apple haya decidido crear diferentes versiones de sus herramientas de desarrollo, una por cada plataforma. En concreto, estas plataformas de desarrollo (que se muestran en la Figura 1.2) son: iphoneos.platform es la plataforma de desarrollo para generar binarios para los procesadores ARM. Estos binarios se generan preparados Figura 1.2: Plataformas de desarrollo para enlazar con las librerías de enlace dinámico del dispositivo. iphonesimulator.platform es la plataforma para desarrollar aplicaciones que ejecutan en iphone Simulator. Se diferencia de la anterior en que el binario contiene instrucciones Intel, y enlaza con las librerías de enlace dinámico del simulador. RC Libros 15

20 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD MacOSX.platform es la plataforma por defecto. Genera binarios Intel que enlazan con las librerías de enlace dinámico del sistema operativo Mac OS X. Si queremos generar una aplicación ios, debemos cambiar de plataforma de desarrollo, lo cual se suele hacer creando la variable de entorno DEVROOT de la siguiente forma: $ export DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer Una plataforma de desarrollo puede tener más de un SDK (Software Development Kit). Luego, además de la plataforma de desarrollo, debemos indicar con qué SDK queremos trabajar, declarando la variable de entorno SDKROOT de la siguiente forma: $ export SDKROOT=$DEVROOT/SDKs/iPhoneOS4.3.sdk Dado que el comando clang, ld, etc., a utilizar son también distintos dependiendo de la plataforma de desarrollo, para compilar aplicaciones ios también se suele modificar la variable de entorno PATH para que encuentre los comandos de la plataforma de ios, antes que los de Mac OS X: $ export PATH="$DEVROOT/usr/bin:$PATH" Una vez declaradas estas variables de entorno, podemos compilar nuestra aplicación con el siguiente comando: $ export CFLAGS="-isysroot $SDKROOT -miphoneos-version-min=4.0" $ clang -arch armv6 $CFLAGS -c Saludador.m pidesaludo.m La variable de entorno CFLAGS proporciona la opción de compilación -isysroot, que indica el directorio raíz donde clang debe buscar los ficheros de cabecera. De no proporcionar esta opción, clang buscaría ficheros de cabecera en /usr/include (el directorio de ficheros de cabecera por defecto). Esto significa que usaría los ficheros de cabecera de Mac OS X, en vez de usar los de ios. Esto posiblemente produciría errores de compilación, ya que estos ficheros de cabecera son distintos. La opción - miphoneos-version-min indica la versión mínima de ios para ejecutar la aplicación. En el ejemplo, 4.0, indica que nuestra aplicación debe ejecutar en ios 4.0 o superior. Conviene que este número sea lo más bajo posible para que nuestra aplicación ejecute en versiones antiguas de ios. Solo si estamos usando funcionalidades nuevas, debemos elevar este número para poder compilar con esa nueva funcionalidad. Obsérvese que la opción -c hace que clang compile los ficheros Saludador.m y pidesaludo.m, para generar los ficheros Saludador.o y pidesaludo.o. Sin embargo, 16 RC Libros

21 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C clang no ha enlazado estos ficheros de código objeto. Para ello, debemos ejecutar el siguiente comando: $ export LDFLAGS="-framework Foundation" $ clang -arch armv6 $CFLAGS $LDFLAGS Saludador.o pidesaludo.o -o pidesaludo En este caso, LDFLAGS proporciona a clang la opción de enlazado -framework, que indica que queremos enlazar con Foundation.framework. Como no, ambos pasos (compilación y enlazado) se pueden ejecutar en un solo paso de la siguiente forma: $ clang -arch armv6 $CFLAGS $LDFLAGS Saludador.m pidesaludo.m -o pidesaludo Por último, copiamos el binario a nuestro dispositivo ios, y lo ejecutamos: $ scp pidesaludo mobile@ferpod.local: $ ssh mobile@ferpod $./pidesaludo Hola mundo Hola de nuevo Hola buenos dias,encantado de verle COMPILANDO CON XCODE En las siguientes subsecciones vamos a aprender a manejar Xcode. En Xcode, un proyecto incluye los ficheros e información requerida para compilar y ejecutar los productos. El proyecto contiene uno o más targets. Un target especifica cómo construir un producto a partir de un conjunto de ficheros. Las instrucciones del target se dividen en fases, llamadas build phases, y en variables llamadas build settings. Podemos usar Xcode para ver y modificar las build phases y build settings de cada target. La Figura 1.3 muestra un proyecto traduce con dos targets. Una aplicación de consola llamada traduce, y una librería de enlace dinámico llamada libtraduce. El proyecto tiene build settings, pero no build phases. Los targets heredan los build settings del proyecto, y pueden redefinir o añadir más build settings. En la Figura 1.3 vemos cómo el target hereda build settings por defecto (Mac OS X default), build settings del proyecto traduce, y por último podemos modificar build settings propios del target. La columna Resolved muestra el valor actual que toma RC Libros 17

22 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD cada build setting. Además, nos marca con un rectángulo verde la posición de donde se hereda cada build setting. Figura 1.3: Elementos de un proyecto Xcode Cuando creamos un nuevo proyecto con Xcode (usando la opción de menú File New Project), Xcode nos muestra un diálogo donde nos pregunta qué tipo de proyecto queremos crear. Al crear el proyecto se crea un producto con el mismo nombre que el proyecto elegido. Si queremos, más tarde podemos añadir más productos al proyecto. Desde el principio indicamos si el proyecto es para Mac OS X o para ios, y la configuración del proyecto varía para adaptarse al entorno para el que vamos a programar. Aunque hay muchos tipos de proyectos, en esta sección vamos a ver solo cuatro tipos de proyectos: un proyecto que crea una aplicación de consola Objective-C, un proyecto que crea una librería de enlace estático, otro proyecto que crea una librería de enlace dinámico, y otro proyecto más que crea un framework. 18 RC Libros

23 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C También, veremos cómo desde otro proyecto Xcode, podremos enlazar con estos tres últimos tipos de productos 3. Crear un programa En esta sección vamos a ver cómo se crea un proyecto cuyo producto es un programa de consola Objective-C. Aunque el uso de Xcode puede resultar muy cómodo, tenga en cuenta que Xcode está llamando por usted a Clang, con lo que procure tener siempre presentes qué opciones son las que Xcode pasa por usted al compilador y enlazador de Clang. Para crear un proyecto de consola, ejecute Xcode, y elija la opción de menú File New Project. Aparecerá un diálogo donde se le preguntará qué tipo de proyecto desea crear. Dentro del grupo Mac OS X, seleccionamos Application Command Line Utility 4. Esto nos permite crear un proyecto Objective-C que enlaza con Foundation Framework. A continuación, se le preguntará el nombre del producto, y con qué librerías enlazar. En nuestro caso, elegiremos el tipo Foundation para enlazar con esta librería, y como nombre de producto indicaremos pidesaludo. Esto creará un comando de consola pidesaludo similar al comando que hicimos en la sección "Compilando con las GCC" de este capítulo, solo que ahora lo vamos a desarrollar desde Xcode. El proyecto Xcode se guarda en un fichero llamado pidesaludo.xcodeproj, en el subdirectorio que usted haya especificado 5. Además, como puede apreciar en la Figura 1.4, dentro del grupo Frameworks aparece Foundation Framework, indicando que tenemos ya acceso a todas las clases Objective-C definidas en este framework. Las carpetas amarillas se llaman Grupos, y no corresponden ni influyen en la estructura de los ficheros en el disco. Simplemente son una forma de organizar nuestros ficheros que podemos cambiar a nuestro antojo. 3 Podrá encontrar información más detallada sobre qué son, y cómo se configuran estos tipos de proyectos, en el tutorial "Compilar y depurar aplicaciones con las herramientas de programación de GNU" publicado en MacProgramadores.org. 4 Esta es la localización de los proyectos de consola que usan Foundation Framework en Xcode 4.0.2, Apple ha cambiado ya varias veces la distribución de los tipos de proyectos en este diálogo, y no sería extraño que en futuras versiones la localización de este tipo de proyecto volviese a cambiar. 5 Realmente pidesaludo.xcodeproj es un subdirectorio con el atributo de bundle que permite que usted lo vea desde el Finder como si fuese un único fichero. RC Libros 19

24 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD Por defecto, se nos habrá creado un fichero llamado main.m con el contenido que muestra la Figura 1.4. En este esqueleto de programa se nos sugiere crear un objeto NSAutoreleasePool, el cual se usa para implementar el sistema de recogida automática de memoria de Objective-C, tal como veremos en la sección "Autorelease pools" del Capítulo 5. Nosotros vamos a cambiar el código generado automáticamente por el del Listado 1.7. Figura 1.4: Programa de consola básico También vamos a añadir al proyecto la clase Saludador que hicimos en la sección anterior. Para ello, podemos usar la opción de menú File New File y seleccionamos el tipo Cocoa Objective-C class. Se nos pregunta de qué clase queremos derivar, e indicamos NSObject. Después se nos pide un nombre de fichero y elegiremos Saludador.m. Dado que hemos pedido crear una clase Objective-C, al crearse el fichero Saludador.m, también se crea automáticamente el fichero de cabecera Saludador.h. Después, solo tenemos que cambiar el código que genera automáticamente Xcode por el del Listado 1.5 y del Listado 1.6. Una vez introducido el código de la clase Saludador, el proyecto generado debería tener la forma de la Figura 1.5. Ahora, podemos usar la opción de menú 20 RC Libros

25 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C Product Build para compilar el programa, y la opción de menú Product Run (o el botón Run) para ejecutar el programa. Figura 1.5: Programa Objective-C terminado También es posible iniciar el proceso de compilación desde el terminal con el comando xcodebuild. Para obtener la lista de targets y de configuraciones de compilación, podemos ejecutar desde el directorio pidesaludo: $ xcodebuild -list Information about project "pidesaludo": Targets: pidesaludo Build Configurations: Debug Release If no build configuration is specified "Release" is used. Para indicar la configuración y target que queremos lanzar, usaríamos: $ xcodebuild -configuration Debug -target pidesaludo ProcessPCH RC Libros 21

26 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD cd /Users/fernando/xcode4/pidesaludo setenv LANG en_us.us-ascii /Developer/usr/bin/clang -x objective-c-header -arch x86_64 - fmessage-length=0 -fdiagnostics-print-source-range-info CompileC cd /Users/fernando/xcode4/pidesaludo setenv LANG en_us.us-ascii /Developer/usr/bin/clang -x objective-c -arch x86_64 -fmessagelength=0 -fdiagnostics-print-source-range-info -fdiagnostics-showcategory=id -fdiagnostics-parseable-fixits Ld build/debug/pidesaludo normal x86_64 cd /Users/fernando/xcode4/pidesaludo setenv MACOSX_DEPLOYMENT_TARGET 10.6 /Developer/usr/bin/clang -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk Este comando genera un log que resulta útil para conocer los comandos que Xcode lanza para realizar la compilación. Una vez termina el proceso de compilación, se creará dentro del directorio de proyecto un subdirectorio build para la configuración elegida (Debug en este caso) 6. Crear una librería de enlace estático En la sección "Crear una librería estática o dinámica" de este capítulo, usamos clang para crear una librería de enlace estático llamada libsaludos.a. Ahora vamos a crear otra vez esta librería, pero desde Xcode. Para empezar, vamos a crear un nuevo proyecto con Xcode usando File New Project, y dentro del grupo Mac OS X Framework & Library elegimos ahora el tipo Cocoa Library. Después, se nos pregunta si queremos que la librería sea de enlace estático o dinámico y elegimos Static. Podemos deseleccionar la opción Include Unit Tests, porque para testear la librería luego crearemos una aplicación de consola. Si elegimos saludos como nombre de producto, Xcode nos generará un proyecto con el nombre saludos.xcodeproj, y una librería de enlace estático con el nombre libsaludos.a. 6 Xcode 4 no genera este directorio build en el directorio de proyecto, porque lo envía a un subdirectorio dentro de $HOME/Library/Developer/Xcode/DerivedData. 22 RC Libros

27 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C La Figura 1.6 muestra qué forma tendrá ahora este proyecto. Observe que en el grupo Frameworks se nos han incluido varias librerías. Sin embargo, observando la pestaña Build Phases del target, vemos que nuestra librería solo enlaza con Cocoa Framework. Las demás librerías aparecen en el grupo por si queremos añadirlas. Realmente (véase sección "Crear una librería estática o dinámica" de este capítulo), para crear una librería de enlace estático no es necesario enlazar con ningún framework, ya que es la aplicación que usa la librería de enlace estático la que debe enlazar con los frameworks. En consecuencia, podemos eliminar los frameworks tal como muestra la Figura 1.7. Figura 1.6: Proyecto de librería estática de partida En el grupo Products de la Figura 1.6, vemos que se nos indica que el producto generado por este proyecto será el fichero de librería estática libsaludos.a. El color rojo indica que el fichero actualmente no existe. En la sección "Crear un programa" anterior, Xcode generó un fichero de código fuente llamado main.m con una función main(). Observe que cuando creamos una librería, Xcode no genera ningún fichero de código fuente. Ahora podemos volver a crear los ficheros Saludador.h y Saludador.m usando la opción de menú File RC Libros 23

28 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD New File Objective-C class. La Figura 1.7 muestra el resultado de crear la librería estática. Figura 1.7: Resultado de crear una librería estática Enlazar con la librería de enlace estático Por otro lado, vamos a crear un proyecto con una aplicación de consola que llame a la librería. Para ello, igual que en la sección "Crear un programa", cree un proyecto de tipo Command Line Tool Foundation llamado pidesadulo. El código fuente del fichero main.m lo podemos cambiar para que sea de nuevo idéntico al del Listado 1.7. Ahora no necesitamos incluir la implementación de la clase, ya que la vamos a coger de la librería estática, pero sí que necesitamos incluir el fichero Saludador.h con la interfaz de clase. Para ello, seleccionamos el grupo pidesaludo y usamos la opción de menú File Add Files to "pidesaludo". Cuando añadimos el fichero Saludador.h, no es necesario marcar la opción Copy items into destination group's folder, ya que no queremos hacer una copia del fichero, sino solamente, añadirlo a nuestro proyecto para que la directiva #import lo encuentre. 24 RC Libros

29 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C Figura 1.8: Programa que usa una librería estática Para usar la librería de enlace estático libsaludos.a desde nuestro programa, la tenemos que añadir a nuestro proyecto pidesaludo.xcodeproj con la opción de menú File Add Files to "pidesaludo". Para encontrar el directorio donde Xcode ha depositado el fichero libsaludos.a, vuelva al proyecto saludos.xcodeproj, seleccione el producto libsaludos.a con el botón derecho, y ejecute la opción del menú contextual Show in Finder. Tras añadir esta librería, el proyecto tendrá la forma de la Figura 1.8, y podremos compilar y ejecutar el programa. Crear una librería de enlace dinámico En Mac OS X y ios las librerías de enlace dinámico suelen tener la extensión.dylib. Para crearlas desde Xcode, volvemos a usar la opción de menú File New Project, y dentro de Application Framework & Library Cocoa Library elegimos el tipo Dynamic. Como nombre de producto podemos elegir libsaludos. RC Libros 25

30 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD Esto generará una librería de enlace dinámico llamada libsaludos.dylib 7. La Figura 1.9 muestra la configuración inicial de este proyecto. Figura 1.9: Proyecto inicial de librería de enlace dinámico Los compiladores actuales pasan la mayoría de su tiempo compilando una y otra vez cabeceras mucho más grandes que el código fuente del fichero.m. Para evitarlo es muy común precompilar las cabeceras. En la Figura 1.9 vemos un fichero con el sufijo Prefix.pch. Este es el fichero que tanto GCC como Clang precompilan con los ficheros de cabecera más comunes del proyecto. De esta forma se evita tener que compilar estos ficheros de cabecera cada vez que se importan con #import. Xcode crea un fichero de cabeceras precompiladas para la mayoría de los proyectos que genera, no solo para las librerías de enlace dinámico. En la Figura 1.9 vemos que este fichero de cabecera se configura indicando en la opción GCC_PREFIX_HEADER el 7 Observe que en la librería estática anterior, Xcode asignaba al fichero de librería estática el nombre del proyecto precedido por lib. Sin embargo, Xcode no pone este prefijo a las librerías de enlace dinámico. Como también es muy común preceder a los nombres de librería de enlace dinámico con lib, nosotros hemos puesto este prefijo al nombre del proyecto. 26 RC Libros

31 CAPÍTULO 1: EMPEZANDO A PROGRAMAR CON OBJECTIVE-C nombre del fichero precompilado. Además, debemos poner YES en la opción GCC_PRECOMPILE_PREFIX_HEADER. En la Figura 1.9 vemos también que, al igual que cuando creamos un proyecto de librería estática, en el grupo Frameworks se nos han incluido varias librerías. A diferencia de las librerías de enlace estático, las librerías de enlace dinámico necesitan indicar los frameworks de los que dependen. Esto hace que antes de cargarse la librería de enlace dinámico, se carguen los frameworks de los que depende. Tal como Xcode ha creado el proyecto, Cocoa es el único framework que enlazará con nuestra librería de enlace dinámico. Tal como vimos en la Figura 1.6, el producto no se enlaza con todos los frameworks que aparezcan en el grupo Frameworks, sino solo con lo que indiquemos en la pestaña Build Phases del target. Los demás frameworks que aparecen en el grupo Frameworks son frameworks inicialmente inactivos para el target. La razón por la que Xcode nos los pone en el proyecto es porque, al ser frameworks muy usados, frecuentemente querremos activarlos. Figura 1.10: Librería de enlace dinámico enlazada con Foundation Framework RC Libros 27

32 OBJECTIVE-C. CURSO PRÁCTICO PARA PROGRAMADORES MAC OS X, IPHONE Y IPAD Como nuestra librería de enlace dinámico no necesita enlazar con Cocoa 8, solo con Foundation Framework, podemos eliminar los demás frameworks del proyecto y activar Foundation Framework en la pestaña Build Phases del target. Por defecto, Xcode añade Cocoa.h al fichero de cabeceras precompiladas libsaludos- Prfix.pch. Como nuestra librería de enlace dinámico solo usa Foundation Framework, podemos cambiar Cocoa.h por Foundation.h en el fichero de cabeceras precompiladas. Tras cambiar las librerías con las que enlazamos y el fichero de cabeceras precompiladas, el proyecto debería tener la forma de la Figura El resto del proceso de creación de la librería de enlace dinámico es similar al de la librería de enlace estático. Cree los ficheros de ejemplo Saludador.h y Saludador.m, y compile el producto para producir el fichero libsaludos.dylib. En la Figura 1.10, hemos sacado el fichero libsaludos-prefix.pch del grupo Supporting Files para demostrar que los grupos no tienen ninguna influencia en la forma en que Xcode busca y compila los ficheros. Enlazar con la librería de enlace dinámico De nuevo, puede crear una aplicación pidesaludo, como la de la sección anterior, desde la que acceder a la librería de enlace dinámico. Después, debemos añadir la librería de enlace dinámico libsaludos.dylib al proyecto. Una forma alternativa a la opción de menú File Add Files to "pidesaludo" es, arrastrar desde Finder el fichero libsaludos.dylib al grupo Frameworks de nuestro proyecto. También tendremos que añadir el fichero Saludador.h (pero no Saludador.m, que está implementado en la librería de enlace dinámico). De nuevo, al añadir Saludador.h no debemos activar la opción Copy Items into destination group's folder, ya que no queremos crear una copia de este fichero, sino enlazar el que ya existe en el proyecto libsaludos. Seguramente, cuando vaya a ejecutar ahora el programa pidesaludo, obtendrá un mensaje de error de la siguiente forma: 8 Cocoa es un framework que engloba a Foundation Framework. A los frameworks que engloban otros frameworks se les llama umbrela frameworks. 28 RC Libros

Objective-C. Curso práctico para desarrolladores OS X y ios. Fernando López Hernández

Objective-C. Curso práctico para desarrolladores OS X y ios. Fernando López Hernández Objective-C Curso práctico para desarrolladores OS X y ios Fernando López Hernández Objective-C. Curso práctico para desarrolladores OS X y ios Fernando López Hernández ISBN: 978-84-943055-3-5 EAN: 9788494305535

Más detalles

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico

Más detalles

Unidad II. Interfaz Grafica

Unidad II. Interfaz Grafica Clase:004 1 Unidad II Interfaz Grafica Basado en https://developer.apple.com/library/ios/#referencelibrary/gettingstar ted/roadmapios/chapters/introduction.html 2 Agenda Desarrollo de Apps para IOS. Diseño

Más detalles

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo

Más detalles

Oficina Online. Manual del administrador

Oficina Online. Manual del administrador Oficina Online Manual del administrador 2/31 ÍNDICE El administrador 3 Consola de Administración 3 Administración 6 Usuarios 6 Ordenar listado de usuarios 6 Cambio de clave del Administrador Principal

Más detalles

Creación y administración de grupos de dominio

Creación y administración de grupos de dominio Creación y administración de grupos de dominio Contenido Descripción general 1 a los grupos de Windows 2000 2 Tipos y ámbitos de los grupos 5 Grupos integrados y predefinidos en un dominio 7 Estrategia

Más detalles

Guía de inicio rápido a

Guía de inicio rápido a Guía de inicio rápido a Office 365 para pequeñas empresas La experiencia web La experiencia de aplicaciones de escritorio La experiencia móvil Ayuda y comunidad de Office 365 Microsoft Office 365 para

Más detalles

Notas para la instalación de un lector de tarjetas inteligentes.

Notas para la instalación de un lector de tarjetas inteligentes. Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación

Más detalles

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1102 Introducción a la Programación Tutorial eclipse TM Introducción al uso de eclipse TM Contents

Más detalles

Toda base de datos relacional se basa en dos objetos

Toda base de datos relacional se basa en dos objetos 1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.

Más detalles

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. 1 de 18 Inicio Qué es un foro En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. En el campus virtual, el foro es una herramienta

Más detalles

2. Seleccione OneDrive en la parte superior de los sitios de SharePoint u Office 365 de su organización.

2. Seleccione OneDrive en la parte superior de los sitios de SharePoint u Office 365 de su organización. Como acceder a nuestra cuenta de OneDrive Business: 1. Inicie sesión en Office 365 (https://portal.office.com). 2. Seleccione OneDrive en la parte superior de los sitios de SharePoint u Office 365 de su

Más detalles

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

Manual CMS Mobincube

Manual CMS Mobincube Manual CMS Mobincube CMS Mobincube Qué es? El CMS (Sistema de Gestión de Contenidos) es un completo website que permite la creación y actualización de contenido remoto. De esta forma, una vez creada una

Más detalles

MANUAL BASICO DE WEBEX

MANUAL BASICO DE WEBEX MANUAL BASICO DE WEBEX Webex es un servicio de web conferencias y soluciones de colaboración, lo que significa que nos permite crear una conferencia por internet en la cual además de vernos los unos a

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante Modulo 2. Inicio con Java Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como lenguaje de programación o como plataforma, pero, que es en realidad Java?, cual es su historia?,

Más detalles

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora Plataforma e-ducativa Aragonesa Manual de Administración Bitácora ÍNDICE Acceso a la administración de la Bitácora...3 Interfaz Gráfica...3 Publicaciones...4 Cómo Agregar una Publicación...4 Cómo Modificar

Más detalles

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes? Preguntas frecuentes Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes? Atención! Esta opción es de configuración y solamente la prodrá realizar el administrador de la

Más detalles

Manual de NVU Capítulo 4: Los enlaces

Manual de NVU Capítulo 4: Los enlaces Manual de NVU Capítulo 4: Los enlaces Pág. 1 Manual de NVU Capítulo 4: Los enlaces Reconocimiento-NoComercial-CompartirIgual 2.5 España Realizado por: Julio Ruiz Palmero (Universidad de Málaga) julioruiz@uma.es

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT)

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT) MANUAL DE AYUDA MODULO SAT (Anexo Integración AGIL SAT) Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS 1 INTRODUCCION... 3 1.1 Objetivo... 3 1.2 Descripción de la aplicación Agil-SAT PDA... 3 1.3

Más detalles

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS HERRAMIENTA DE APROVISIONAMIENTO... 3 1. QUÉ ES LA HERRAMIENTA DE APROVISIONAMIENTO... 3 HERRAMIENTA

Más detalles

Configuracion Escritorio Remoto Windows 2003

Configuracion Escritorio Remoto Windows 2003 Configuracion Escritorio Remoto Windows 2003 Instalar y configurar servicio de Terminal Server en Windows 2003 Fecha Lunes, 25 diciembre a las 17:04:14 Tema Windows (Sistema Operativo) Os explicamos cómo

Más detalles

Unidad I. Introducción a la programación de Dispositivos Móviles (Continuación )

Unidad I. Introducción a la programación de Dispositivos Móviles (Continuación ) Clase:003 1 Unidad I Introducción a la programación de Dispositivos Móviles (Continuación ) 2 Entornos de Desarrollo Virtualizaciones. Agenda IDE s. Y Lenguajes de Programación. 3 Virtualización Que es

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

Capítulo 1 Documentos HTML5

Capítulo 1 Documentos HTML5 Capítulo 1 Documentos HTML5 1.1 Componentes básicos HTML5 provee básicamente tres características: estructura, estilo y funcionalidad. Nunca fue declarado oficialmente pero, incluso cuando algunas APIs

Más detalles

GUÍA DE USUARIO: GOOGLE DRIVE

GUÍA DE USUARIO: GOOGLE DRIVE GUÍA DE USUARIO: GOOGLE DRIVE Google Drive es una herramienta telemática de la web 2.0 que permite el trabajo virtual de forma colaborativa. En Google Drive podemos encontrar una barra de navegación en

Más detalles

El Entorno Integrado de Desarrollo Dev-C++ (Ayuda básica para las primeras sesiones de prácticas)

El Entorno Integrado de Desarrollo Dev-C++ (Ayuda básica para las primeras sesiones de prácticas) El Entorno Integrado de Desarrollo Dev-C++ (Ayuda básica para las primeras sesiones de prácticas) Sobre Dev-C++ Dev-C++ es un Entorno Integrado de Desarrollo para el lenguaje de programación C/C++ que

Más detalles

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín TEMA 4: EMPEZANDO A ESCUELA UNIVERSITARIA DE INFORMÁTICA NAVEGAR Raúl Martín Martín SERVICIOS DE INTERNET SERVICIOS DE INTERNET Las posibilidades que ofrece Internet se denominan servicios. Hoy en día,

Más detalles

Anexo A Diagramas de Navegación

Anexo A Diagramas de Navegación Anexo A Diagramas de Navegación Figura D.1: Diagrama de navegación de la pantalla principal. 43 Figura D.2: Diagrama de navegación del apartado Crear Encuesta. 44 Figura D.3: Diagrama de navegación del

Más detalles

Novedades PhotoGestion 5

Novedades PhotoGestion 5 Novedades PhotoGestion 5 En este documento repasamos las novedades más importantes de la versión 5 del programa PhotoGestion. Explicaremos cada novedad, como funciona y como se configura. Contenido Envío

Más detalles

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS Nuestra empresa es una pequeña editorial que maneja habitualmente su lista de ventas en una hoja de cálculo y desea poder realizar un análisis de sus

Más detalles

GUIA DE USUARIO. CONFIGURACION CORREO ELECTRONICO

GUIA DE USUARIO. CONFIGURACION CORREO ELECTRONICO versiongalega.com - Departamento de Atención al cliente GUIA DE USUARIO. CONFIGURACION CORREO ELECTRONICO En este documento encontrará una descripción de cómo configurar sus cuentas de correo electrónico

Más detalles

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos: UNIDAD 8 Presentaciones Reunión. (ITE. Banco de imágenes) as presentaciones son documentos formados por una sucesión de páginas, llamadas diapositivas, que transmiten información estructurada de manera

Más detalles

MEDIA KIT TRAFFICFACTORY.BIZ

MEDIA KIT TRAFFICFACTORY.BIZ ES MEDIA KIT Alcance a millones de usuarios Nuestra red le conecta con millones de visitantes únicos, incluyendo a muchos que no encontrará en ningún otro lugar. TrafficFactory es una agencia de publicidad

Más detalles

Tutorial: Cómo realizar tu primer programa en C++ En el Sistema Operativo Windows

Tutorial: Cómo realizar tu primer programa en C++ En el Sistema Operativo Windows Tutorial: Cómo realizar tu primer programa en C++ En el Sistema Operativo Windows Lo primero que hay que tener en cuenta para poder hacer nuestro primer programa en C++ es que necesitamos ciertas herramientas

Más detalles

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir?

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir? Google Docs 1 Itinerario 1.1 Qué vamos a hacer? En este tutorial aprendemos a manejar la herramienta Google Docs, de esta forma nos introduciremos en el llamado cloud computing, que podemos traducir como,

Más detalles

TEMA 5. INTRODUCCIÓN AL MANEJO DE ORIGIN 6.1

TEMA 5. INTRODUCCIÓN AL MANEJO DE ORIGIN 6.1 TEMA 5. INTRODUCCIÓN AL MANEJO DE ORIGIN 6.1!"# 1. Introducción En muchos aspectos, el Origin es muy similar a Excel. Y lo es, más que en su apariencia, en la versatilidad y en las funciones que permite

Más detalles

CRM para ipad Manual para Usuario

CRM para ipad Manual para Usuario CRM para ipad Manual para Usuario Manual del CRM en el ipad para usuario. Contenido: Apartado 1 Concepto General. Visión general y concepto de Delpro(CRM). Apartado 2 Conexión y Sistema Delpro. Configuración

Más detalles

Gestión de Retales WhitePaper Noviembre de 2009

Gestión de Retales WhitePaper Noviembre de 2009 Gestión de Retales WhitePaper Noviembre de 2009 Contenidos 1. Introducción 3 2. Almacén de retales 4 3. Propiedades de los materiales 6 4. Alta de retales 8 5. Utilización de retales en un lote de producción

Más detalles

MANUAL COPIAS DE SEGURIDAD

MANUAL COPIAS DE SEGURIDAD MANUAL COPIAS DE SEGURIDAD Índice de contenido Ventajas del nuevo sistema de copia de seguridad...2 Actualización de la configuración...2 Pantalla de configuración...3 Configuración de las rutas...4 Carpeta

Más detalles

1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS.

1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS. CREANDO UNIDADES VIRTUALES DE CD Y DVD CON DAEMON TOOLS 1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS. Daemon Tools es una herramienta que permite a los usuarios simular una unidad o varias unidades

Más detalles

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La puesta en marcha de WordPress es muy sencilla,

Más detalles

CÓMO CREAR NUESTRO CATÁLOGO

CÓMO CREAR NUESTRO CATÁLOGO CÓMO CREAR NUESTRO CATÁLOGO Mediante la aplicación (http://www.prensasoft.com/programas/conline) podemos crear nuestros propios catálogos. Para crear un catálogo necesitamos: - Varios productos que mostrar,

Más detalles

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

PLANTILLAS DE DOCUMENTOS EN WORD 2007

PLANTILLAS DE DOCUMENTOS EN WORD 2007 1 PLANTILLAS DE DOCUMENTOS EN WORD 2007 Introducción Una plantilla es un modelo o patrón para crear nuevos documentos. En una plantilla se guarda internamente el formato utilizado, es decir, el estilo

Más detalles

CRM para ipad Manual para Usuario

CRM para ipad Manual para Usuario CRM para ipad Manual para Usuario Manual del CRM en el ipad para usuario. Contenido: Apartado 1 Concepto General. Visión general y concepto de Delpro(CRM). Apartado 2 Conexión y Sistema Delpro. Configuración

Más detalles

Guía rápida de la Oficina Virtual (Solicit@V5) Área Web y Administración Electrónica

Guía rápida de la Oficina Virtual (Solicit@V5) Área Web y Administración Electrónica Guía rápida de la Oficina Virtual (Solicit@V5) Área Web y Administración Electrónica HOJA DE CONTROL Título Nombre del Fichero Autores Guía rápida de la Oficina Virtual (Solicit@V5) UHU_GuiaRapidaSolicita_V5.pdf

Más detalles

MANUAL DE AYUDA MODULO TALLAS Y COLORES

MANUAL DE AYUDA MODULO TALLAS Y COLORES MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3

Más detalles

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto INFORMÁTICA INFORMÁTICA 1 Sesión No. 4 Nombre: Procesador de Texto Contextualización La semana anterior revisamos los comandos que ofrece Word para el formato del texto, la configuración de la página,

Más detalles

Descarga, instalación y uso de herramientas:

Descarga, instalación y uso de herramientas: Descarga, instalación y uso de herramientas: Eclipse: Instalación de Eclipse (Más información en http://www.eclipse.org/) 1. Copiar, descomprimir e instalar si es necesario la última versión de Eclipse

Más detalles

1. El entorno de desarrollo Eclipse

1. El entorno de desarrollo Eclipse Índice 1. El entorno de desarrollo Eclipse 1 1.1. Qué es Eclipse?........................................................ 1 1.2. Trabajando con Eclipse....................................................

Más detalles

MANUAL WINDOWS MOVIE MAKER. Concurso de Gipuzkoa

MANUAL WINDOWS MOVIE MAKER. Concurso de Gipuzkoa MANUAL WINDOWS MOVIE MAKER Concurso de Gipuzkoa ÍNDICE 1. Presentación del diseño del Windows Movie Maker 3 2. Captura de video 4 3. Importar video 8 4. Edición de la película a. Añadir video y/o imágenes

Más detalles

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER Centros educativos de la Comunidad de Madrid que deseen ser centros de prácticas de los alumnos del Máster en Profesorado de ESO y Bachillerato,

Más detalles

Sistema de Facturación de Ventas WhitePaper Enero de 2007

Sistema de Facturación de Ventas WhitePaper Enero de 2007 Sistema de Facturación de Ventas WhitePaper Enero de 2007 Ronda Guglielmo Marconi, 9 Parque Tecnológico 46980 Paterna Valencia Spain T +34 96 338 99 66 ventas@preference.es Please Recycle PrefSuite Document

Más detalles

Guía N 1: Fundamentos básicos(i)

Guía N 1: Fundamentos básicos(i) 1 Guía N 1: Fundamentos básicos(i) Objetivos Generales: Ver una breve descripción de las capacidades más comunes de Excel Objetivos específicos: Descripción de los elementos de un libro: Hojas, iconos,

Más detalles

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS Página 1 de 20 INSTALACIÓ N A3ERP INTRODUCCIÓN La instalación de a3erp v9 ha sufrido una trasformación importante respecto a sus versiones anteriores. Cualquier instalación exige la existencia de un pc

Más detalles

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE) 1. Introducción. TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE) El Explorador es una herramienta indispensable en un Sistema Operativo ya que con ella se puede organizar y controlar los contenidos (archivos

Más detalles

Servicio de Email Marketing

Servicio de Email Marketing Servicio de Email Marketing Cuando hablamos de Email marketing, es un envío Masivo de correos con permisos realizado por herramientas tecnológicas de correo electrónico, mediante el cual su anuncio estará

Más detalles

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE ÍNDICE ACCESO A LA APLICACIÓN... 2 1.- HOMOLOGACIÓN DE CURSOS... 4 1.1.- INICIAR EXPEDIENTE... 4 1.2.- CONSULTA DE EXPEDIENTES... 13 1.3.- RENUNCIA A LA HOMOLOGACIÓN... 16 2.- MECÁNICA DE CURSOS... 19

Más detalles

efactura Online La fibra no tiene competencia

efactura Online La fibra no tiene competencia Manual efactura Online La fibra no tiene competencia ÍNDICE efactura Online Interface de efactura Online Barra Superior Área de Trabajo. Pestañas Empresas Personalizar factura Clientes Facturar Crear una

Más detalles

Guía de administración de Huddle Versión 2.3

Guía de administración de Huddle Versión 2.3 Guía de administración de Huddle Versión 2.3 Contenido: Explicando las Licencias de Administrador de Huddle 3 Administradores de Espacio de trabajo: Pestaña de propiedades 4 Propiedades de Espacio de trabajo

Más detalles

Escritorio remoto y VPN. Cómo conectarse desde Windows 7

Escritorio remoto y VPN. Cómo conectarse desde Windows 7 Escritorio remoto y VPN. Cómo conectarse desde Windows 7 Hay ocasiones en las que es necesario conectarnos a un equipo informático situado a mucha distancia de donde nos encontramos para realizar sobre

Más detalles

Manual: Gestor de contenidos e-gim cms. 6 abril 2010

Manual: Gestor de contenidos e-gim cms. 6 abril 2010 Manual: Gestor de contenidos e-gim cms 6 abril 2010 Índice 1 ACCESO AL GESTOR DE CONTENIDOS...3 2 ADMINISTRACIÓN...5 2.1 USUARIOS...5 2.2 ÁREAS...6 3 TIPOS DE CONTENIDO...9 3.1 DIRECTORIO...9 3.2 EVENTOS...10

Más detalles

Instalación del programa PSPP y obtención de una distribución de frecuencias.

Instalación del programa PSPP y obtención de una distribución de frecuencias. Práctica 2. Instalación del programa PSPP y obtención de una distribución de frecuencias. Con esta práctica instalaremos el programa PSPP. El programa es un software específico para el análisis estadístico

Más detalles

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento Qué es AT-Encrypt nos permitirá dotar de contraseña a cualquier documento o carpeta. Este documento o carpeta sólo será legible por aquel que conozca la contraseña El funcionamiento del cifrado (o encriptación)

Más detalles

Administración de portales Joomla (II) antonio.duran.terres@gmail.com

Administración de portales Joomla (II) antonio.duran.terres@gmail.com Administración de portales Joomla (II) antonio.duran.terres@gmail.com Módulos Con la instalación base de Joomla vienen varios módulos Algunos ya los vimos, como encuestas o Quien está en línea? Hay otros

Más detalles

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES 1. ÍNDICE MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES 1. INTRODUCCIÓN...4 2 INSTALACIÓN DE LA APLICACIÓN...4 3 PANTALLA DE ACCESO...5 4 SELECCIÓN DE CLÍNICA...6 5 PANTALLA PRINCIPAL...7 6.

Más detalles

para jóvenes programadores

para jóvenes programadores Manual de Kompozer para jóvenes programadores Por Angel Pablo Hinojosa Gutiérrez Para la Oficina de Software Libre de la Universidad de Granada Copyright 2010: Angel Pablo Hinojosa Gutiérrez El Manual

Más detalles

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta Configuración de una red con Windows Aunque existen múltiples sistemas operativos, el más utilizado en todo el mundo sigue siendo Windows de Microsoft. Por este motivo, vamos a aprender los pasos para

Más detalles

Microsoft Access proporciona dos métodos para crear una Base de datos.

Microsoft Access proporciona dos métodos para crear una Base de datos. Operaciones básicas con Base de datos Crear una Base de datos Microsoft Access proporciona dos métodos para crear una Base de datos. Se puede crear una base de datos en blanco y agregarle más tarde las

Más detalles

Guía Rápida de Inicio

Guía Rápida de Inicio Guía Rápida de Inicio 1. Acerca de esta Guía Esta guía le ayudará a instalar y dar los primeros pasos con BitDefender Security for SharePoint. Para disponer de instrucciones detalladas, por favor, diríjase

Más detalles

FUNDAMENTOS DE PROGRAMACION CON C#

FUNDAMENTOS DE PROGRAMACION CON C# Capítulo 1 FUNDAMENTOS DE PROGRAMACION CON C# El lenguaje C# C# (léase, en inglés C sharp, y en español C almohadilla) es un lenguaje de programación que permite el desarrollo de aplicaciones para Internet,

Más detalles

CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6

CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6 CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6 Carpetas sin conexión Gestión de mensajes enviados Gestión de mensajes eliminados Firma digital Envío de mensajes firmados digitalmente Recepción de mensajes

Más detalles

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

AGREGAR COMPONENTES ADICIONALES DE WINDOWS INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución

Más detalles

15 CORREO WEB CORREO WEB

15 CORREO WEB CORREO WEB CORREO WEB Anteriormente Hemos visto cómo funciona el correo electrónico, y cómo necesitábamos tener un programa cliente (Outlook Express) para gestionar los mensajes de correo electrónico. Sin embargo,

Más detalles

Instalación de Visual Studio Metodología de la Programación I Universidad de Granada

Instalación de Visual Studio Metodología de la Programación I Universidad de Granada Instalación de Visual Studio Metodología de la Programación I Universidad de Granada Índice 1. Conseguir e instalar Visual Studio 5 1.1. Conseguir Visual Studio.................... 5 1.2. Instalar Visual

Más detalles

Fundamentos CAPÍTULO 1. Contenido

Fundamentos CAPÍTULO 1. Contenido CAPÍTULO 1 Fundamentos En este capítulo encontrará instrucciones rápidas y sencillas que le permitirán poner manos a la obra de inmediato. Aprenderá también a utilizar la ayuda en pantalla, que le será

Más detalles

Bases de datos en Excel

Bases de datos en Excel Universidad Complutense de Madrid CURSOS DE FORMACIÓN EN INFORMÁTICA Bases de datos en Excel Hojas de cálculo Tema 5 Bases de datos en Excel Hasta ahora hemos usado Excel básicamente para realizar cálculos

Más detalles

Servicio de Alta, Baja, Modificación y Consulta de usuarios Medusa

Servicio de Alta, Baja, Modificación y Consulta de usuarios Medusa Documentos de Proyecto Medusa Documentos de: Serie: Manuales Servicio de Alta, Baja, Modificación y Consulta del documento: Fecha 22 de febrero de 2007 Preparado por: José Ramón González Luis Aprobado

Más detalles

MANUAL DE USO PARA ESTUDIANTES PLATAFORMA VIRTUAL UNIVERSIDAD TECNOLOGICA INDOAMERICA

MANUAL DE USO PARA ESTUDIANTES PLATAFORMA VIRTUAL UNIVERSIDAD TECNOLOGICA INDOAMERICA MANUAL DE USO PARA ESTUDIANTES PLATAFORMA VIRTUAL UNIVERSIDAD TECNOLOGICA INDOAMERICA A continuación encontrará los pasos para uso de la Plataforma virtual de la Universidad Para ingresar, ingrese al sitio

Más detalles

Instalación de Microsoft Virtual PC

Instalación de Microsoft Virtual PC Instalación de Microsoft Virtual PC Virtual PC es un software de Microsoft que permite instalar varios sistemas operativos en la misma máquina, sin tener que reiniciar Windows y además de forma segura,

Más detalles

Tareas básicas en OneNote 2010 Corresponde a: Microsoft Office OneNote 2010

Tareas básicas en OneNote 2010 Corresponde a: Microsoft Office OneNote 2010 areas básicas en OneNote 2010 - OneNote - Office.com http://office.microsoft.com/es-ar/onenote-help/tareas-basicas-en-onenote... 1 de 3 23/04/2012 10:40 p.m. Soporte / OneNote / Ayuda y procedimientos

Más detalles

INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA

INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA TERMINAL SERVER TUTOR: JORGE CASTELLANOS MORFIN 19/02/2012 VILLA DE ALVARES, COLIMA Indice Introducción... 3 Objetivo... 3 Lista de Materiales... 3 Procedimiento...

Más detalles

Tutorial: Primeros Pasos con Subversion

Tutorial: Primeros Pasos con Subversion Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través

Más detalles

Acronis License Server. Guía del usuario

Acronis License Server. Guía del usuario Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE

Más detalles

Tutorial para la creación de un blog institucional

Tutorial para la creación de un blog institucional Tutorial para la creación de un blog institucional El siguiente tutorial nos permitirá acercarnos a los conocimientos básicos, necesarios para crear nuestro blog y alojarlo en el servidor de la Facultad

Más detalles

Accede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de:

Accede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de: Gemelo Backup Online DESKTOP Manual DISCO VIRTUAL Es un Disco que se encuentra en su PC junto a las unidades de discos locales. La información aquí existente es la misma que usted ha respaldado con su

Más detalles

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas. ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas. Sala de sistemas, Video proyector, Guías RECURSOS ACTIVIDADES PEDAGÓGICAS

Más detalles

Módulo 1 El lenguaje Java

Módulo 1 El lenguaje Java Módulo 1 El lenguaje 1.1 Presentación de es un lenguaje de programación desarrollado por la empresa Sun Microsystems en 1991 como parte de un proyecto secreto de investigación llamado Green Proyect, con

Más detalles

Contenido. Email: capacitacion@u cursos.cl / Teléfono: 9782450

Contenido. Email: capacitacion@u cursos.cl / Teléfono: 9782450 GMI Contenido PUBLICAR AVISO... 3 CREAR PROCESO DE SELECCIÓN... 6 VER/ELIMINAR AVISOS PUBLICADOS... 8 ETAPAS DE UN PROCESO DE SELECCIÓN... 10 SECCIONES DE LOS PROCESOS DE SELECCIÓN (GPS)... 21 PERSONALIZAR

Más detalles

TUTORIAL PARA REDIMENSIONAR FOTOS

TUTORIAL PARA REDIMENSIONAR FOTOS TUTORIAL PARA REDIMENSIONAR FOTOS Es extremadamente importante cuidar las imágenes con las que trabajamos en nuestro sitio Web y no subir fotografías a cualquier tamaño. Esto puede ralentizar considerablemente

Más detalles

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este Manual para usuarios USO DE ONEDRIVE Universidad Central del Este Contenido 1. QUÉ ES Y PARA QUÉ SIRVE OFFICE 365?... 3 1.1 CÓMO ENTRAR A LA PLATAFORMA DE OFFICE 365 DE LA UCE?... 3 ONEDRIVE... 5 2. QUÉ

Más detalles

MANUAL DE USUARIO ANTIVIRUS BANDA ANCHA

MANUAL DE USUARIO ANTIVIRUS BANDA ANCHA MANUAL DE USUARIO ANTIVIRUS BANDA ANCHA ÍNDICE 1 INTRODUCCIÓN... 4 1.1 ANTIVIRUS BANDA ANCHA... 4 1.2 ANTIVIRUS... 4 1.3 EFICACIA... 4 1.4 ACTUALIZACIONES... 4 2 REQUISITOS TÉCNICOS... 6 2.1 CONOCIMIENTOS

Más detalles

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación Vicerrectorado de Tecnologías de la Información y la Comunicación Conexión mediante Escritorio Remoto de Windows Última Actualización 16 de septiembre de 2013 Histórico de cambios Fecha Descripción Autor

Más detalles

UNIVERSIDAD DE MEDELLÍN NUEVO PORTAL WEB MANUAL DE USUARIO GESTOR DE CONTENIDOS

UNIVERSIDAD DE MEDELLÍN NUEVO PORTAL WEB MANUAL DE USUARIO GESTOR DE CONTENIDOS UNIVERSIDAD DE MEDELLÍN MANUAL DE USUARIO GESTOR DE CONTENIDOS NUEVO PORTAL WEB TABLA DE CONTENIDO Tabla de Contenido 2 Consideraciones Iniciales 3 Ingreso al Sistema 4 Opciones de Gestor de contenidos

Más detalles

Mi primer proyecto en Dev-C++

Mi primer proyecto en Dev-C++ Mi primer proyecto en Dev-C++ Para realizar esta actividad deberás disponer de un ordenador en el que esté instalado el Dev-C++. Debes ir realizando cada uno de los pasos indicados, en el mismo orden en

Más detalles