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...
Regístrate para leer el documento completo.