Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro...

36
Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010

Transcript of Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro...

Page 1: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

Curso de Iniciación a la Programación del iPhone SDK con Objective-C

Pablo Romeu – UCH-CEUPedro Cid - Nabbel

Moncada, Julio 2010

Page 2: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

2

Presentación

• Pablo Romeu– Profesor Colaborador UCH-CEU

• Pedro Cid– Programador iPhone SDK – Perteneciente a http://www.nabbel.es/

Page 3: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

3

Presentación

• Fechas: Del 9 al 16 de julio de 2010• Horario: 9 – 14h• Dos sesiones por día• 30 horas• Lugar: Aula Imac's Edificio Beato Luis Campos Górriz, CEU-

UCH (Alfara del Patriarca)• 3 CLC para estudiantes CEU• IMPORTANTE: Firmar asistencia para obtener certificado

Page 4: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

4

¿Qué voy a aprender?

• Lo que vas a aprender:– Utilizar las herramientas del iPhone SDK– Entender la sintaxis de Objective-C– El modelo MVC– Muchas de las funcionalidades del SDK– Moverte por la documentación para obtener ayuda– Tema avanzado a tu elección

Page 5: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

5

¿Qué voy a aprender?

• Lo que NO vas a aprender:– Programación Orientada a Objetos (lo

presuponemos)– Conceptos Avanzados (no tenemos

tiempo)

¿Curso Avanzado para la próxima edición?

Page 6: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

6

¿Qué seré capaz de hacer?

• Trataremos de poner ejemplos de todo• Podrás realizar tus propias aplicaciones

sencillas• Podrás utilizar la documentación para

aprender a hacer aplicaciones más avanzadas

Page 7: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

7

Algunas Cuestiones

• El tiempo es reducido (30 horas en 6 días)– Poco tiempo para practicar– Aprovechar el tiempo al 150% (se ruegan descansos

cortos)• Seguiremos el modelo de clase de la Universidad de

Stanford. (http://www.stanford.edu/class/cs193p/cgi-bin/index.php)

• Se recomienda encarecidamente mirar la documentación de continuo. http://developer.apple.com/iphone/library/navigation/index.html

Page 8: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

8

Algunas Cuestiones

Y la más importante…

PREGUNTAD

Page 9: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

9

Presentación

DUDAS

Page 10: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

10

Primera Sesión

• Pablo Romeu:– Introducción al esquema de Licencias, AppStore, etc.– Introducción al iPhone SDK

• Xcode

• Interface Builder

• Simulador– Introducción a Objective-C

Page 11: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

11

Primera Sesión

• Pablo Romeu:– Introducción al esquema de Licencias, AppStore, etc.– Introducción al iPhone SDK

• Xcode

• Interface Builder

• Simulador– Introducción a Objective-C

Page 12: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

12

Introducción al esquema de Licencias, AppStore, etc.

• “¿Qué debo de hacer para publicar una App?”– Desarrollar Apps es gratuito, publicarlas no.– Modelos de licencia de desarrollo:

• Pública: 99$ - 100 dispositivos TEST y ad-hoc

• Privada: 299$ - Entidad de más de 500 empleados

• Universitaria: Gratis – 200 dispositivos TEST

Page 13: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

13

Introducción al esquema de Licencias, AppStore, etc.

University Standard Enterprise

Acceso a Betas No Sí Sí

Testeo en dispositivos

200 100 ? (+ 500)

Instalación en dispositivos

No Sí Sí

Publicar en AppStore

No Sí No

Precio Gratis 99$/año 299$/año

Page 14: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

14

Introducción al esquema de Licencias, AppStore, etc.

• “¿Y cuanto me voy a sacar por cada programa?”– Si es gratis, nadie saca nada (ni te cobran)

• Puedes poner anuncios con iAd (y sacar beneficio por click)

– Si es de pago 30% para Apple y el 70% para el desarrollador

– Además, están las compras In-App

Page 15: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

15

Introducción al esquema de Licencias, AppStore, etc.

• “Estoy preparado… ¿cómo publico una aplicación?”– Se utiliza iTunes Connect:

• Establecer usuarios: Admin, técnico, finanzas, etc.

• Firmar Contrato.

• Proveer información de la aplicación: nombre, screenshots, palabras clave, rating, etc.

• Enviar …

• Y rezar para que la aprueben ;)

– 90 y muchos % son aprobadas

Page 16: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

16

Introducción al esquema de Licencias, AppStore, etc.

• “Bueno, pero antes tendré que probarla”:– Simulador: No es necesaria licencia.– Sistema de instalación Ad-Hoc (Test):

• Se utiliza el iPhone Provisioning Portal.

• Mediante certificados.

• Apple firma la aplicación y así se asegura que no se sobrepasa el número de dispositivos.

Page 17: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

17

Introducción al esquema de Licencias, AppStore, etc.

• Recapitulando– Licencias: Standard, Enterprise, University– Publicar en AppStore: Usuarios, Contratos, Enviar

información y rezar para que esperar que aprueben la app.– Beneficios: Free (ni para ti ni para mi), iAd, InApp, de pago

(70% para nosotros – 30% para Apple)– Instalación en dispositivos: mediante certificados. Limitado.

Page 18: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

18

Primera Sesión

• Pablo Romeu:– Introducción al esquema de Licencias, AppStore, etc.– Introducción al iPhone SDK

• Xcode

• Interface Builder

• Simulador– Introducción a Objective-C

Page 19: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

19

Introducción al iPhone SDK

• Se divide en varias partes, las más interesantes son:

• Xcode

• Interface Builder

• Simulador

• Instruments

NOTA: parece ser que en la próxima versión, los primeros vendrán integrados.

Page 20: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

20

Introducción al iPhone SDK

• Xcode

• Interfaz gráfico de programación

• Se utiliza tanto para Mac OS X como para iOS

• Tiene algunas facilidades muy interesates como autocompletado de información, ayuda, etc.

Page 21: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

21

Introducción al iPhone SDK

Demo de XCODE

(abridlo vosotros también)

Page 22: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

22

Introducción al iPhone SDK

• Interface Builder

• Interfaz gráfico de diseño

• Nos permite diseñar la vista de la aplicación

• Además, permite asignar gráficamente qué métodos (funciones) se ejecutarán dado un determinado evento sobre un objeto de la vista

• Ej: ¿Qué función ejecutar al pulsar un botón? ¿Y al mover un slider?

Page 23: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

23

Introducción al iPhone SDK

Demo de IB

(abridlo vosotros también)

Page 24: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

24

Introducción al iPhone SDK

• Simulador

• Permite probar programas

• Hay algunas cosas que NO puede probar (ej. GPS)• Instruments:

• Permite hacer profiling de programas.

• Comprobar rendimiento, memory leaks, etc.

Page 25: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

25

Introducción al iPhone SDK

Demo de Simulador

(abridlo vosotros también)

Page 26: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

26

Primera Sesión

• Pablo Romeu:– Introducción al esquema de Licencias, AppStore, etc.– Introducción al iPhone SDK

• Xcode

• Interface Builder

• Simulador– Introducción a Objective-C

Page 27: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

27

Introducción a Objective-C

– Lenguaje Orientado a Objetos– Superconjunto de C

• Cualquier cosa hecha en C funciona!!!– Sintaxis –supuestamente- clara y simple.– Como todo, tiene ventajas:

• Cosas que nos hacen más fácil la vida (@syntethize)

• Cosas que nos la complican Gestión de memoria (en iOS)

Page 28: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

28

Introducción a Objective-C

– MAXIMA SUPREMA: En Objective-C “[]” = “.”– Invocar un método:

• miObjeto.miMétodo;

• Es lo mismo que: [miObjeto miMétodo];

– RECOMENDACIÓN: Utilizar sintaxis propia de Objective-C. O sea “[….];”

– Hay alguna excepción

Page 29: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

29

Introducción a Objective-C

– Crear un objeto e Instanciarlo:

• MiClase *var = [[MiClase alloc] init];

• Miclase es el nombre de la clase

• *var es la referencia a nuestro objeto

• Alloc reserva la memoria para un objeto de tamaño MiClase

• Init llama al constructor/inicializador de la clase MiClase

Page 30: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

30

Introducción a Objective-C

– Llamar a un método:

• Sin argumentos: [MiClase miMetodo];

• Con un argumento: [MiClase miMetodo: arg1];

• Con más de un argumento: [MiClase miMetodo: arg1 argumento2: arg2];

• (argumento2 es el nombre que se ha usado en la definición de miMetodo)

Page 31: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

31

Introducción a Objective-C

– Organización del código y superclases:

• Como en otros lenguajes, tiene ficheros de cabecera (ficheros .h) y de implementación (.m)

• Las clases heredan siempre de otra clase, al menos de la clase genérica NSObject

• Todos los objetos genéricos del lenguaje empiezan por NS (NSString, por ejemplo)

• Los objetos de Interfaz de usuario suelen empezar por UI (UIButton, por ejemplo)

Page 32: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

32

Introducción a Objective-C

@interface MiClase: SuperClase {NSString *var1;NSString *var2;}@property (nonatomic, copy) NSString *var1;@property (nonatomic, copy) NSString *var2;- (void) miMetodo;- (void) miMetodo: (ClaseA *)arg1;- (void) miMetodo: (ClaseA *) arg1 argumento2:(ClaseA *)arg2;+ (void) miMetodoClase;@end

Page 33: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

33

Introducción a Objective-C

– En el ejemplo anterior:

• Los métodos con + delante son de clase. NO NECESITAN UNA INSTANCIA PARA EJECUTARSE

• Los métodos con – delante son de instancia. NECESITAN un objeto.

• Enseguida vemos los “property” y los “synthesize”.

Veamos un ejemplo de implementación

Page 34: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

34

Introducción a Objective-C

#import "MiClase.h"@implementation MiClase@synthesize var1;@synthesize var2;- (void) miMetodo {´ // hacer algo con alguna variable de la clase}+ (void) miMetodoClase {return @“Hola”;}@end

Page 35: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

35

Introducción a Objective-C

– En el ejemplo anterior:

• Tenemos dos métodos implementados.

• El @ de @”Hola” indica una constante

• Tenemos implementados dos @synthesize:

– Los @property y @synthesize son directivas que le indican al compilador que queremos que genere automáticamente un “getter” y un “setter”.

– Cuando se declara una Property, se establecen modificadores

Page 36: Curso de Iniciación a la Programación del iPhone SDK con Objective-C Pablo Romeu – UCH-CEU Pedro Cid - Nabbel Moncada, Julio 2010.

36

Introducción a Objective-C

– Modificadores de una property:

• Assign: get devuelve una variable y set hace una asignación simple.

• Copy: get y set comprueban que objeto no nil. Set hará una copia antes de liberar

• Nonatomic: la variable no necesita ser atómica

• Retain: funciona igual que assign

Lo veremos en gestión de memoria