You are on page 1of 22

Objective-C y la

programación en iPhone
Programación Avanzada
Contenido
  Que es Objective-C

  Características del lenguaje

  Semejanzas con Java

  iPhone

  Cococa Touch

  Ejemplos
Que es Objective-C
  Es una extensión de C (compatible hacia atrás) para
hacerlo orientado a objetos, basado en Smaltalk.

  Mas limpio, pequeño y rápido de aprender que C++.

  Lenguaje utilizado por Mac OS X.

  No esta estandarizado por ningún organismo


internacional, Apple y NEXTSTEP son quienes han
contribuido en crear este lenguaje. Ambos trabajan en
mantener y mejorarlo.
Características
  Es un lenguaje muy dinámico. Muchas decisiones se toman en
tiempo de ejecución.

  5 tipos de dinamismo:
  Memoria Dinámica. Los objetos siempre se crean en memoria
dinámica.
  Tipos dinámicos. El runtime se encarga detecta y usa el tipo
de variables
  Introspección. Podemos conocer la estructura de un objeto en
tiempo de ejecución.
  Enlace dinámico. Envío de mensajes por llamada a función
(Polimorfismo). Se encarga el runtime.
  Carga dinámica. Cargar clases en función de su uso. Hacen
programas extensibles (Plug-ins)
Clases
  Consta de una interface (.h) y una implementación
(.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 módulos pueden tener
el mismo nombre.
Ejemplo de interface
Ejemplo de implementación
Instanciar objetos
  Se debe llamar a los métodos alloc e init:
  Punto *p = [[Punto alloc] init]

  Alloc reserva memoria.

  Init es el constructor, inicializa las variables de


instancia

  También se podría utilizar new ya que ambas


operaciones son muy comunes.

  Tipos dinámicos (punteros): id p = [Punto new]

  Para liberar objetos: [p release]


Métodos
  Nivel. + para métodos de clases, y – para métodos de
instancia

  Tipo de retorno, si tiene, entre paréntesis. Por defecto


retorna id.

  Nombre.

  Parámetros. Hereda de Smalltalk. Tantos parámetros como


haya. A los parámetros además del tipo y y variable se puede
etiquetar-> Código 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 común ver:
Métodos factory
  El compilador de Objective-C crea objetos que
representan clases, esto proporciona grandes ventajas a
la hora de crear patrones de diseño.

  Métodos que combinan creación e iniciación y empiezan


por el nombre +clase… Por ejemplo NSString posee:
  + (id)stringWithCString:(const char*)cString
encoding:(NSStringEncoding)enc

  Útil cuando la creación depende de la iniciación. Ej: no


se conoce la memoria a reservar hasta que no se conoce
que fichero se quiere leer
Gestión de memoria
  Gestión 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 colaboración del programador. retain
incrementa la cuenta, release la decrementa y dealloc
libera.
Categorías
  Permiten modificar una clase aunque no tengamos el
código. Se diferencia con la herencia en que nos
permite modificar nodos interiores de la jerarquía de
clases. Usos:
  Para clases grandes, particionarlas. Reparte trabajo tanto
para el compilador como para los programadores
  Añadir nuevos métodos a clases de fabricantes. Ej:
métodos de búsqueda para NSArray.
  Diferenciar API privada y API pública. Apple lo hace con los
Framework destinados al SDK para iPhone.
  Declarar protocolos informales.
Protocolos
  Declaran métodos no asociados con ninguna clase.
Cualquier clase los puede implementar. Ej en interfaz
gráfica:
  - (void)mouseDown:(NSEvent*)theEvent;
  - (void)mouseDragged:(NSEvent*)theEvent;
  - (void)mouseUp:(NSEvent*)theEvent;

  Separa jerarquía de clases con funcionalidad común.

@interface Punto : NSObject <Imprimible, Dibujable>


Propiedades
  Se introdujo a partir de la versión de Leopard de Mac OS
X.
  Consiste en la definición de métodos ‘get’ y ‘set’.
  Estas ayudan a mejorar la productividad del
programador. Además permiten personalizar la forma de
acceso a estas.

  Ej: En la interface: @property(readonly) NSInteger x;


en la implementación: @synthesize x; esta directiva nos
garantiza robustez en accesos concurrentes.

  Otros modificadores: retain, readwrite, nonatomic, etc


Introducción a la Programación en
iPhone
  Primer dispositivo móvil de
Apple.

  Utiliza el sistema operativo


iPhone OS, construido desde
el conocimiento y tecnología
de Mac OS X.

  Además incorpora
acelerómetro, localización
por GPS, Cámara e interfaz
Multi-touch.
Características
  Eventos Multi-Touch   Renderizado de gráficos 2D y
3D (OpenGL)
  Seguridad con encriptación,
certificados, etc.   Reproducción y grabación de
audio
  Internacionalización de
Software   Acelerómetro

  Comunicación entre   GPS


aplicaciones usando esquemas
URL.   Cámara
  Hilos, puertos, E/S estándar   Base de datos SQLite, etc.
  Tipos de datos básicos como
colecciones
Capas iPhone OS
  Tiene un conjunto de capas, la mas baja servicios
fundamentales, capas superiores, servicios y tecnologías
mas sofisticadas.
• Core OS. Contiene el Kernel,
sistema de archivos, infraestructura
de red, seguridad.
• Core Services. Sockets, SQLite,
threads
• Media. Gráficos 2D, 3D, audio,
video(Quartz, OpenGL, Core
Animation).
• Cocoa Touch. Interfaz gráfica
(UIKit), Foundation Framework
Cocoa Touch
  Ya existente en Mac OS X, añade características para la
tecnología multi-touch
  UIKit. Proporciona los objetos que muestra una aplicación
en su ‘Interfaz de Usuario’, manejo de eventos y gráficos.
Soporta además código para el manejo del acelerómetro,
la cámara, la librería 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
  Tamaño de la pantalla. 480 x 320 pixeles. La interfaz se
basa en vistas. Sistema de navegación

  Memoria. Al tratarse de un móvil, memoria limitada.


Cuando se agota la memoria se produce un evento el
cual debe controlar el programador, en caso contrario se
cerrara la aplicación.

  Aplicaciones simultaneas. Solo se permite una


aplicación ejecutándose. Cuando se produce una
llamada o llega un SMS se cerrara. Responsabilidad de
guardar el estado de la aplicación.
Estilo de aplicación
Aplicaciones productivas. Organización y
manipulación de la información. Rapidez
frente a diseño. Navegación de menús mas
generales a menús mas específicos.

Utilidades. Minima acción del


usuario, visualmente
atractiva. Diferentes vista
Pantalla completa. Riqueza
para el mismo tipo de
información, pero de visual. Videojuegos, música,
video.
diferentes objetos.
Ejemplos y proceso de
publicación en App Store

You might also like