02 iOS 1
Índice
•
•
•
•
•
•
Introducción a iOS
Objective-C
Xcode
Interface Builder
UIKit
Ejemplo de Aplicación
•
•
•
•
Rendimiento
Otras APIs
Open Telefónica con iOS
Documentación
Introducción a iOS
iDevices
iDevices Timeline
iPhone
iPod touch
iPad
2007
2008
2009
2010
App Store
• Tienda de aplicaciones
• ¡+300.000 aplicaciones!
• Gratuitas y de pago
•70/30 R/S
iOS SDK
• Disponible gratis en el iOS Dev Center
Xcode, Interface Builder y iPhone
• Incluye
Simulator
• Sólo para Mac (Leopard y Snow Leopard)
• Versión actual: 4.1
http://developer.apple.com/devcenter/ios/
iOS Developer Program
• 79 € / año
aplicaciones en el dispositivo (no
• Ejecutar
sólo simulador)
• Distribución en el App Store
http://developer.apple.com/programs/ios/
iOSCocoa Touch
Media
Core Services
Core OS
iOS
Cocoa Touch
Media
Core Services
Core OS
• BSD
• Threads
• Sockets
• Security
• File System
• Bonjour
iOS
Cocoa Touch
Media
Core Services
Core OS
• Address Book
• CFNetwork
• Core Data
• Foundation
• Core Location
• Store Kit
iOS
Cocoa Touch
Media
Core Services
Core OS
• Core Graphics (Quartz)
• Core Animation
• OpenGL ES
• Core Audio• Media Player
• OpenAL
iOS
Cocoa Touch
Media
Core Services
Core OS
•
•
•
•
•
UIKit
Map Kit
Game Kit
iAd
Otros: Push
Notifications,
Multitasking, etc.
iOS vs. Mac OS X
Cocoa Touch
Cocoa
Media
Media
Core Services
Core Services
Core OS
Core OS
iOS
Mac OS X
Diseño
•
Es distinto a diseñar una aplicación para escritorio:
•
•
•
•
•
Interfaz táctil (multi-touch)
Pantalla pequeñaMemoria limitada
Sólo una ventana a la vez
Sólo una aplicación activa en cada momento
Ejemplos de diseño: Mail
Ejemplos de diseño: iPhoto
Resolución
Dispositivo
Resolución
iPhone (< 4)
320x480
iPod touch (<4th gen)
320x480
iPhone 4
640x960
iPod touch (4th gen)
640x960
iPad
768x1024
Orientación
Tipos de aplicación
1. Apps nativas
2. Web apps
3. Apps híbridas
TecnologíasObjective-C
Java
C/C++
HTML5
Flash
Objective-C
Objective-C
• Basado en ANSI C
• Orientado a objetos
• Sintaxis relativamente simple
• Combinable con C++ (Objective-C++)
Recordatorio OOP
Gato
Edad
Peso
Atributos
Color
Comer
Clase
Dormir
Métodos
Recordatorio OOP
Clase
Objetos
Clases
Nombre de la clase
Nombre de la clase base
@interface Circle : NSObject
{
CGPoint m_pos;
float m_r;}
Variables
- (id)initWithPosition:(CGPoint)pos R:(float)r;
- (float)getArea;
@end
Circle.h
Métodos
Clases
@implementation Circle
- (id)initWithPosition:(CGPoint)pos R:(float)r
{
self = [super init];
if (self) {
m_pos = pos;
m_r = r;
}
return self;
}
- (float)getArea
{
return 2.0 * 3.141592 * m_r;
}
@end
Circle.m
Creación de Objetos
•
•
•
Dos pasos:
•
•
Reservar memoria (alloc)Inicializar el objeto (init)
alloc común para todas las clases (heredado de NSObject)
Lo habitual es que cada clase defina su propio init
Person* p = [[Person alloc] init];
Circle* c = [[Circle alloc] initWithPosition:p R:5];
Mensajes
[c getArea];
[ball calculatePositionForTime:10.0];
[self doSomething];
Destrucción de Objetos
[object release];
Permite que se destruya el objeto (dealloc)Properties
@interface MyClass : NSObject
{
float value;
}
Declaración
@property float value;
@end
@implementation MyClass
@synthesize value;
Implementación
@end
MyClass* objeto = [[MyClass alloc] init];
objeto.value;
Uso
Strings
NSString* myString = @"My String\n";
NSString* anotherString = [NSString stringWithFormat:
@"Tu nota es %f, %@", 5.0, @"Manuel"];
NSString* utf8String =@"こんにちわ、世界";
Protocols
de métodos que puede implementar
• Lista
cualquier clase
a las interfaces en Java o las
• Equivalentes
clases abstractas en C++
@protocol Drawable
- (void)updateDrawingData:(float)time;
- (void)draw;
@end
Declaración
@interface MyObject : NSObject < Drawable >
{
// ...
}
// ...
@end
Adopción
Xcode
Xcode
•
•
•
•
IDE
Mac OS X y iOS
Debugger
iPhone Simulator
Demo
Crear...
Regístrate para leer el documento completo.