Sunteți pe pagina 1din 68

Grupo de Usuarios de Macintosh

de la Universidad de Sevilla

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Programando aplicaciones para iPhone OS

Jesús Felipe Trujillo Rodríguez


martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Programando aplicaciones para iPhone OS


1ª Parte

Jesús Felipe Trujillo Rodríguez


martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Objetivos

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objetivos
• General

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objetivos
• General
• Introducir a programadores habituados a la POO
al desarrollo en el iPhone SDK.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objetivos
• General
• Introducir a programadores habituados a la POO
al desarrollo en el iPhone SDK.

• Específicos de la 1ª Parte

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objetivos
• General
• Introducir a programadores habituados a la POO
al desarrollo en el iPhone SDK.

• Específicos de la 1ª Parte
• Sintaxis

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objetivos
• General
• Introducir a programadores habituados a la POO
al desarrollo en el iPhone SDK.

• Específicos de la 1ª Parte
• Sintaxis
• Interfaces e Implementaciones

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objetivos
• General
• Introducir a programadores habituados a la POO
al desarrollo en el iPhone SDK.

• Específicos de la 1ª Parte
• Sintaxis
• Interfaces e Implementaciones
• Gestión de Memoria (Punteros)

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objetivos
• General
• Introducir a programadores habituados a la POO
al desarrollo en el iPhone SDK.

• Específicos de la 1ª Parte
• Sintaxis
• Interfaces e Implementaciones
• Gestión de Memoria (Punteros)
• Clases comunes de Foundation Framework

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objetivos
• General
• Introducir a programadores habituados a la POO
al desarrollo en el iPhone SDK.

• Específicos de la 1ª Parte
• Sintaxis
• Interfaces e Implementaciones
• Gestión de Memoria (Punteros)
• Clases comunes de Foundation Framework
• La clase TwitStatus del proyecto GUMTwit
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

El iPhone / iPod Touch

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

El iPhone / iPod Touch

• Interfaz de 480x320px

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

El iPhone / iPod Touch

• Interfaz de 480x320px
• Memoria RAM escasa, hay que
tener cuidado al programar.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

El iPhone / iPod Touch

• Interfaz de 480x320px
• Memoria RAM escasa, hay que
tener cuidado al programar.
• Una sola aplicación capta el foco,
las demás permanecen cerradas.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

El iPhone / iPod Touch

• Interfaz de 480x320px
• Memoria RAM escasa, hay que
tener cuidado al programar.
• Una sola aplicación capta el foco,
las demás permanecen cerradas.
• Hardware adicional
GPS,Acelerómetros,Teléfono.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

El iPhone / iPod Touch

• Interfaz de 480x320px
• Memoria RAM escasa, hay que
tener cuidado al programar.
• Una sola aplicación capta el foco,
las demás permanecen cerradas.
• Hardware adicional
GPS,Acelerómetros,Teléfono.
• Posibilidad de acceso a información
de la agenda, contactos, etc...

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore


• AppStore centraliza todas las aplicaciones para
iPhone

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore


• AppStore centraliza todas las aplicaciones para
iPhone
• Existen aplicaciones Gratuitas y de Pago.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore


• AppStore centraliza todas las aplicaciones para
iPhone
• Existen aplicaciones Gratuitas y de Pago.
• El AppStore sigue la operativa de iTunes

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore


• AppStore centraliza todas las aplicaciones para
iPhone
• Existen aplicaciones Gratuitas y de Pago.
• El AppStore sigue la operativa de iTunes
• Generando un beneficio de 430 millones de US$

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore


• AppStore centraliza todas las aplicaciones para
iPhone
• Existen aplicaciones Gratuitas y de Pago.
• El AppStore sigue la operativa de iTunes
• Generando un beneficio de 430 millones de US$
• Se han hecho más de 1000 millones de descargas

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore


• AppStore centraliza todas las aplicaciones para
iPhone
• Existen aplicaciones Gratuitas y de Pago.
• El AppStore sigue la operativa de iTunes
• Generando un beneficio de 430 millones de US$
• Se han hecho más de 1000 millones de descargas
• ¿Qué necesito para publicar en el AppStore?

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore


• AppStore centraliza todas las aplicaciones para
iPhone
• Existen aplicaciones Gratuitas y de Pago.
• El AppStore sigue la operativa de iTunes
• Generando un beneficio de 430 millones de US$
• Se han hecho más de 1000 millones de descargas
• ¿Qué necesito para publicar en el AppStore?
• Solicitar una licencia de desarrollador ($99)

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Aplicaciónes para iPhone: AppStore


• AppStore centraliza todas las aplicaciones para
iPhone
• Existen aplicaciones Gratuitas y de Pago.
• El AppStore sigue la operativa de iTunes
• Generando un beneficio de 430 millones de US$
• Se han hecho más de 1000 millones de descargas
• ¿Qué necesito para publicar en el AppStore?
• Solicitar una licencia de desarrollador ($99)
• La aplicación debe cumplir las Condiciones de
Uso
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objective-C 2.0

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objective-C 2.0

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Foundation Framework

Objective-C 2.0

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Cocoa Touch Framework (UIKit)

Foundation Framework

Objective-C 2.0

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

iPhone OS API

Cocoa Touch Framework (UIKit)

Foundation Framework

Objective-C 2.0

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Objective-C 2.0
C de toda la vida + Ampliación a Objetos
void contarOvejas (int numero) {
int contador = 0;
char* mensaje = “por el pastor”;
while (contador < numero) { Sintaxis de una función
if (condicion) { en ANSI C
contador++;
} else {
fprintf(“rechazada %s”,mensaje);
}
}
}
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Objective-C 2.0

- (void) contarOvejasWithLimite: (NSNumber *)numero {


int contador = 0;
NSString *mensaje = @”por el pastor”;
while (contador < [numero intValue]) {
if (condicion) {
Sintaxis extendida a
contador++;
objetos
} else {
NSLog(“rechazada %@”, mensaje);
}
}
}
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Declaración de Métodos

- (NSArray *) listaPersonasMayoresDe: (NSNumber *)años conResidenciaEn: (NSString *)ciudad;

Tipo Devuelto

2 Parámetros
De (-)instancia o
de (+)clase
Nombre del método:
listaPersonasMayoresDe:conResidenciaEn:

No existe el control de acceso a los métodos,


todos los métodos son public
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Llamada a Métodos

NSArray *respuesta;
respuesta = [objInstancia listaPersonasMayoresDe: 45 conResidenciaEn: @”Sevilla”];

objeto Nombre del método

Java
ArrayList respuesta;
respuesta = objInstancia.getListaPersonasMayores(45,”Sevilla”);

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Uso de objetos

NSMutableArray *lista = [[NSMutableArray alloc] init];


[lista addObject: objeto1];
[lista addObject: objeto2 atIndexes: 4];
[lista removeLastObject];

Java
LinkedList lista = new LinkedList();
lista.add(objeto1);
lista.set(4,objeto2);
lista.remove(lista.size()-1);

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Las interfaces - Headers


• Parecidas a las interfaces de Java, pero no iguales.
• Parte conocida de la clase.
• Contiene las cabeceras de los métodos implementados.
• Contiene los nombres y tipos de las variables de instancia y
estáticas así como su visibilidad.
• Indica la superclase de la nuestra.
• Contienen directivas de compilador para generar código
automáticamente. @property
• Las interfaces como las conocemos en Java son llamadas
Protocolos en Obj-C (sólo cabeceras) y suelen usarse con
delegates

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Las interfaces
Imports
nombre : Super

Variables

Directivas get/set
generan
Métodos

Metodo
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Las implementaciones

Nombre

Directivas
@synthesize
generan
Métodos get/set

Cabecera Método

Cuerpo del Método

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

@property y @synthesize
• Son directivas de compilador que generan código
repetitivo por nosotros.
• Nos ahorran escribir métodos set y get
Interfaz
@property (readwrite,retain) NSNumber *numero;
readwrite copy
readonly assign
retain
Implementación
@synthesize numero;
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Gestión de Memoria
• Todos los objetos en Objective-C vienen referenciados por su
puntero.
NSString *cadena = [[NSString alloc] init];
• * representa que la variable es una referencia a una dirección
de memoria en la cual está el contenido de cadena.

“Hola” Todos los objetos en


Obj-C tienen que ser
referenciados como
Punteros *
Memoria
*cadena
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Gestión de Memoria

• La asignación (=) en punteros no copia el valor, se copia la


referencia. Pasa lo mismo que en Java.
pueden quedar
NSString *cadena2 = cadena1; referencias
huerfanas

“Hola”

Memoria
*cadena1 *cadena2
Un cambio en cadena2 también cambia el contenido de cadena1
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Gestión de Memoria
• La gestión de memoria tiene un papel primordial en
el código Obj-C.
• El seguimiento de las convenciones de código nos
ahorrará tiempo depurando errores.
• Debemos responsabilizarnos de ocupar(alloc+init) y
desocupar la memoria (release)
• Una mala gestión provoca errores en tiempo de
ejecución y pérdidas (leaks)

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Copia de objetos por referencia


NSString *cadena = [[NSString alloc] init];
NSString *cadena2 = [cadena retain];
cadena2 = [cadena2 lowercaseString]; ¿cambian los dos?
...
[cadena2 release]; Debemos destruir las variables cuando
terminemos, sino tendremos una
[cadena release]; perdida de memoria

[cadena length]; Peta irremediablemente

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Copia de objetos por valor


NSString *cadena = [[NSString alloc] init];
NSString *cadena2 = [cadena copy];
cadena2 = [cadena2 lowercaseString]; ¿cambian los dos?
...
[cadena2 release]; Debemos destruir las variables cuando
terminemos, sino tendremos una
[cadena release]; perdida de memoria

[cadena length]; Peta irremediablemente

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

¿Tenemos que preocuparnos de liberar objetos devueltos por un método?

NSString *cadena = [NSString string];


[cadena release];
NO

Sólo nos preocuparemos de liberar los objetos cuando los hayamos


instanciado nosotros con alloc+init, retain o copy.

Todos los métodos que no sean alloc+init,release o copy devuelven objetos


con autorelease. Nosotros deberemos hacerlo también en nuestros

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Implementando un método con autorelease

- (NSString *) devuelveCadena {
NSMutableString *cadena = [[NSMutableString] alloc] init];
[cadena appendWithString:@”Hola”];
[cadena autorelease];
return cadena;
}

Autorelease se encargará de liberar el objeto cuando sea necesario.


Liberándonos de hacer ese trabajo.

martes 12 de mayo de 2009


Descanso y preguntas
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

Nuestra primera aplicación

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Nuestra primera aplicación

• Cliente de Twitter para iPhone.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Nuestra primera aplicación

• Cliente de Twitter para iPhone.


• Usaremos el patrón MVC (Modelo Vista
Controlador).

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Nuestra primera aplicación

• Cliente de Twitter para iPhone.


• Usaremos el patrón MVC (Modelo Vista
Controlador).
• En esta charla desarrollaremos el Modelo (TwitStatus
y TwitUser).

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Nuestra primera aplicación

• Cliente de Twitter para iPhone.


• Usaremos el patrón MVC (Modelo Vista
Controlador).
• En esta charla desarrollaremos el Modelo (TwitStatus
y TwitUser).
• En la segunda parte desarrollaremos una interfaz
gráfica y enlazaremos las acciones.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

¿Qué es Twitter?

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

¿Qué es Twitter?

• Sistema de microblogging.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

¿Qué es Twitter?

• Sistema de microblogging.
• Tiene un API pública de desarrollo, basada en
servicios Web.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

¿Qué es Twitter?

• Sistema de microblogging.
• Tiene un API pública de desarrollo, basada en
servicios Web.
• Enviaremos nuestras peticiones GET (HTTP) según el
API.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

¿Qué es Twitter?

• Sistema de microblogging.
• Tiene un API pública de desarrollo, basada en
servicios Web.
• Enviaremos nuestras peticiones GET (HTTP) según el
API.
• Twitter nos responderá con archivos XML que
analizaremos en forma de árboles.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

¿Qué es Twitter?

• Sistema de microblogging.
• Tiene un API pública de desarrollo, basada en
servicios Web.
• Enviaremos nuestras peticiones GET (HTTP) según el
API.
• Twitter nos responderá con archivos XML que
analizaremos en forma de árboles.
• La clase “Mágica” se encargará de hablar con Twitter
y darnos resultados en función de nuestro modelo.

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Patrón MVC

• Las operaciones sobre los datos son


independientes de como se
Controlador
representen.
• Un mismo modelo puede tener
varias vistas.
• Busca la reusabilidad de código.
Modelo Vista • Patrón más usado para el desarrollo
de aplicaciones.
• Se separa el código de manera clara,
no existen “clases para todo”

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

Controlador
ViewController

Modelo Vista

TwitUser TwitLib
TwitStatus
martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

TwitStatus

TwitStatus

- twit_id: NSNumber
- user: TwitUser
- text: NSString
- date: NSDate
- source: NSString

martes 12 de mayo de 2009


GUMUS Programación en iPhone OS 1

TwitUser

TwitUser

- user_id: NSNumber
- screen_name: NSString
- name: NSString
- location: NSString
- description: NSString

martes 12 de mayo de 2009


Preguntas
martes 12 de mayo de 2009
GUMUS

Gracias por asistir


martes 12 de mayo de 2009
GUMUS Programación en iPhone OS 1

martes 12 de mayo de 2009

S-ar putea să vă placă și