Iphone

Solo disponible en BuenasTareas
  • Páginas : 5 (1040 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de junio de 2011
Leer documento completo
Vista previa del texto
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 porMac 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

Instanciarobjetos
  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 dela 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 einiciació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++   Recolectorde 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íade 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...
tracking img