Está en la página 1de 22

Objective-C y la programacin en iPhone

Programacin Avanzada

Contenido
Que es Objective-C Caractersticas del lenguaje Semejanzas con Java iPhone Cococa Touch Ejemplos

Que es Objective-C
Es una extensin de C (compatible hacia atrs) para hacerlo orientado a objetos, basado en Smaltalk. Mas limpio, pequeo y rpido de aprender que C++. Lenguaje utilizado por Mac OS X. No esta estandarizado por ningn organismo internacional, Apple y NEXTSTEP son quienes han contribuido en crear este lenguaje. Ambos trabajan en mantener y mejorarlo.

Caractersticas
Es un lenguaje muy dinmico. Muchas decisiones se toman en tiempo de ejecucin. 5 tipos de dinamismo:
Memoria Dinmica. Los objetos siempre se crean en memoria dinmica. Tipos dinmicos. El runtime se encarga detecta y usa el tipo de variables Introspeccin. Podemos conocer la estructura de un objeto en tiempo de ejecucin. Enlace dinmico. Envo de mensajes por llamada a funcin (Polimorfismo). Se encarga el runtime. Carga dinmica. Cargar clases en funcin de su uso. Hacen programas extensibles (Plug-ins)

Clases
Consta de una interface (.h) y una implementacin (.m). Las clases por lo general derivan de NSObject, para poder usar las ventajas del runtime de Objective-C. Java nos obliga a ello. Las variables a diferencia de C++ deben ser punteros a objetos. Aqu no existe variables de clase (static). Las variables de instancia, de clase y mdulos pueden tener el mismo nombre.

Ejemplo de interface

Ejemplo de implementacin

Instanciar objetos
Se debe llamar a los mtodos alloc e init:
Punto *p = [[Punto alloc] init]

Alloc reserva memoria. Init es el constructor, inicializa las variables de instancia Tambin se podra utilizar new ya que ambas operaciones son muy comunes. Tipos dinmicos (punteros): id p = [Punto new] Para liberar objetos: [p release]

Mtodos
Nivel. + para mtodos de clases, y para mtodos de instancia Tipo de retorno, si tiene, entre parntesis. Por defecto retorna id. Nombre. Parmetros. Hereda de Smalltalk. Tantos parmetros como haya. A los parmetros adems del tipo y y variable se puede etiquetar-> Cdigo mejor documentado. Ej: [pedido anadeCliente:1 nombre:"Juan" edad:23 saldo:260];

Herencia
Todas las clases derivan de la clase base NSObject, o de la clase de GNU Object. No se recomienda hacer clases base. Operador self y super = que this y super de java. Podemos modificar self al contrario que this que es de solo lectura. Es muy comn ver:

Mtodos factory
El compilador de Objective-C crea objetos que representan clases, esto proporciona grandes ventajas a la hora de crear patrones de diseo. Mtodos que combinan creacin e iniciacin y empiezan por el nombre +clase Por ejemplo NSString posee:
+ (id)stringWithCString:(const char*)cString encoding:(NSStringEncoding)enc

til cuando la creacin depende de la iniciacin. Ej: no se conoce la memoria a reservar hasta que no se conoce que fichero se quiere leer

Gestin de memoria
Gestin de memoria manual. Por cuenta del programador como C++ Recolector de basura como Java. Penaliza el rendimiento. Disponible en Leopard Mantener la cuenta de referencias de un objeto. Necesita la colaboracin del programador. retain incrementa la cuenta, release la decrementa y dealloc libera.

Categoras
Permiten modificar una clase aunque no tengamos el cdigo. Se diferencia con la herencia en que nos permite modificar nodos interiores de la jerarqua de clases. Usos:
Para clases grandes, particionarlas. Reparte trabajo tanto para el compilador como para los programadores Aadir nuevos mtodos a clases de fabricantes. Ej: mtodos de bsqueda para NSArray. Diferenciar API privada y API pblica. Apple lo hace con los Framework destinados al SDK para iPhone. Declarar protocolos informales.

Protocolos
Declaran mtodos no asociados con ninguna clase. Cualquier clase los puede implementar. Ej en interfaz grfica:
- (void)mouseDown:(NSEvent*)theEvent; - (void)mouseDragged:(NSEvent*)theEvent; - (void)mouseUp:(NSEvent*)theEvent;

Separa jerarqua de clases con funcionalidad comn.

@interface Punto : NSObject <Imprimible, Dibujable>

Propiedades
Se introdujo a partir de la versin de Leopard de Mac OS X. Consiste en la definicin de mtodos get y set. Estas ayudan a mejorar la productividad del programador. Adems permiten personalizar la forma de acceso a estas. Ej: En la interface: @property(readonly) NSInteger x; en la implementacin: @synthesize x; esta directiva nos garantiza robustez en accesos concurrentes. Otros modificadores: retain, readwrite, nonatomic, etc

Introduccin a la Programacin en iPhone


Primer dispositivo mvil de Apple. Utiliza el sistema operativo iPhone OS, construido desde el conocimiento y tecnologa de Mac OS X. Adems incorpora acelermetro, localizacin por GPS, Cmara e interfaz Multi-touch.

Caractersticas
Eventos Multi-Touch Seguridad con encriptacin, certificados, etc. Internacionalizacin de Software Renderizado de grficos 2D y 3D (OpenGL) Reproduccin y grabacin de audio Acelermetro

Comunicacin entre GPS aplicaciones usando esquemas URL. Cmara Hilos, puertos, E/S estndar Tipos de datos bsicos como colecciones Base de datos SQLite, etc.

Capas iPhone OS
Tiene un conjunto de capas, la mas baja servicios fundamentales, capas superiores, servicios y tecnologas mas sofisticadas. Core OS. Contiene el Kernel, sistema de archivos, infraestructura de red, seguridad. Core Services. Sockets, SQLite, threads Media. Grficos 2D, 3D, audio, video(Quartz, OpenGL, Core Animation). Cocoa Touch. Interfaz grfica (UIKit), Foundation Framework

Cocoa Touch
Ya existente en Mac OS X, aade caractersticas para la tecnologa multi-touch
UIKit. Proporciona los objetos que muestra una aplicacin en su Interfaz de Usuario, manejo de eventos y grficos. Soporta adems cdigo para el manejo del acelermetro, la cmara, la librera de fotos, etc. Foundation Framework. Define el acceso y manejo de objetos, provee acceso a los tipos de datos primitivos, colecciones y servicios del sistema operativo.

Proceso de desarrollo
Tamao de la pantalla. 480 x 320 pixeles. La interfaz se basa en vistas. Sistema de navegacin Memoria. Al tratarse de un mvil, memoria limitada. Cuando se agota la memoria se produce un evento el cual debe controlar el programador, en caso contrario se cerrara la aplicacin. Aplicaciones simultaneas. Solo se permite una aplicacin ejecutndose. Cuando se produce una llamada o llega un SMS se cerrara. Responsabilidad de guardar el estado de la aplicacin.

Estilo de aplicacin
Aplicaciones productivas. Organizacin y manipulacin de la informacin. Rapidez frente a diseo. Navegacin de mens mas generales a mens mas especficos.

Utilidades. Minima accin del usuario, visualmente atractiva. Diferentes vista para el mismo tipo de informacin, pero de diferentes objetos.

Pantalla completa. Riqueza visual. Videojuegos, msica, video.

Ejemplos y proceso de publicacin en App Store

También podría gustarte