![Page 1: Curso de Iniciación a la Programación del iPhone SDK con Objective-C](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/1.jpg)
Curso de Iniciación a la Programación del iPhone SDK con Objective-CPablo Romeu – UCH-CEUPedro Cid - Nabbel
Moncada, Julio 2010
![Page 2: Curso de Iniciación a la Programación del iPhone SDK con Objective-C](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/9.jpg)
9
Presentación
DUDAS
![Page 10: Curso de Iniciación a la Programación del iPhone SDK con Objective-C](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/13.jpg)
13
Introducción al esquema de Licencias, AppStore, etc.
University Standard EnterpriseAcceso 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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/28.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/31.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/32.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/33.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/34.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/35.jpg)
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](https://reader031.vdocuments.co/reader031/viewer/2022020220/56812a44550346895d8d71f7/html5/thumbnails/36.jpg)
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