You are on page 1of 79

PROGRAMACION

Objective-C

martes, 7 de abril de 15

OBJETOS

Principios de 1980, Brad Cox y Tom Love deciden agregar los conceptos
de orientacin de objetos al lenguaje C. Para los objetos, los construyeron
sobre la idea de estructuras localizadas en el heap y se le agrega la sintaxis
del envo de mensajes. El resultado fue el lenguaje Objective-C.

Los objetos son muy parlanchines por naturaleza. Ellos envan y reciben
mensajes acerca del trabajo que pueden desempear.

Una clase describe a un tipo de objeto en particular. Esta descripcin


incluye mtodos as como las variables de instancia donde los objetos
almacenarn sus datos. El resultado de un objeto es una instancia de la
clase.

martes, 7 de abril de 15

COCOA COMAND LINE TOOL


#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
@autoreleasepool {
NSDate *now = [NSDate date];
NSLog(@The new date lives at %p, now);
}
return 0;
}

%p: Printed out the location of the object

martes, 7 de abril de 15

MENSAJES
El

envo de mensajes es siempre encerrado entre corchetes y


siempre tiene dos partes:
Un
El

apuntador al objeto que recibe el mensaje.

nombre del mtodo que ser disparado.

El

envi de un mensaje (como el llamado de una funcin),


adems puede contener argumentos.

martes, 7 de abril de 15

MENSAJES
martes, 7 de abril de 15

MENSAJES

Mtodos de clase

Mtodos de instancia

[NSDate date]

[now timeIntervalSince1970]

Mtodo con un argumento, determinado por los dos puntos en el


nombre del mtodo.

[now dateByAddingTimeInterval:100000]

martes, 7 de abril de 15

MENSAJES

Es una buena practica (y el nico camino aprobado por Apple) para el envo de mensajes en una
lnea de cdigo (mensajes anidados):

[[NSDate alloc] init]

Multiples argumentos.

NSCalendar *cal = [NSCalendar currentCalendar];

NSUInteger day = [cal ordinalityOfUnit:NSDayCalendarUnit

inUnit:NSMonthCalendarUnit
forDate:now];

Es la mejor manera de escribir un mtodo con multiples argumentos, de otra manera se vera
muy largo. En este caso, el nombre del mtodo es ordinalityOfUnit:inUnit:forDate:

martes, 7 de abril de 15

NSSTRING

Una instancia de NSString mantiene una cadena de caracteres.

NSString *myString1 = @Why me!?;

NSString *myString2 = [NSString stringWithFormat:@The best


number is %d, 5];

NSUInteger charCount = [myString1 lenght];

Para verificar que dos cadenas son iguales:

If([myString1 isEqual: myString2])

martes, 7 de abril de 15

NSARRAY
NSMUTABLEARRAY

Una instancia de NSArray es creada con una lista de apuntdores. No se pueden


agregar o eliminar un apuntador de un arreglo.

Una instancia de NSMutableArray es similar a un NSArray, pero se pueden


agregar y eliminar apuntadores. (NSMutableArray hereda de NSArray:NSObject)

NSDate*now = [NSDate date];

NSDate *tomorrow = [now dateByAddingTimeInterval:24.0 * 60.0 * 60.0];

NSDate *yesterday = [now dateByAddingTimeInterval:-24.0 * 60.0 * 60.0];

NSArray *dateList = [NSArray arrayWithObjects:now, tomorrow, yesterday, nil];

martes, 7 de abril de 15

NSARRAY
NSMUTABLEARRAY

LLVM new syntax in Mountain Lion Xcode

NSArray *words = [NSArray arrayWithObjects:@list, @of , @words, nil];

NSArray *words = @[@list, @of , @words, @123, @3.14];

Algunos mtodos.

count regresa el numero de tems en un arreglo.

objectAtIndex regresa el apuntador que el arreglo tiene almacenado en algn ndice.

Fast enumeration (forin)

for (NSDate *d in dateList) {

NSLog(@Here is a date: %@, d)

martes, 7 de abril de 15

CLASES

Recordar que una clase describe objetos de dos maneras:

Mtodos (tanto mtodos de instancias como mtodos de clase)


implementados por la clase.

Variables de instancia con cada instancia de la clase.

Una clase se define es dos archivos:

.h conocido como header o interface: El cual contiene la declaracin de


variables de instancias y los mtodos.

.m conocido como la implementacin: Aqu se escribe la definicin de cada


mtodo.

martes, 7 de abril de 15

CLASES (.H)
#import <Foundation/Foundation.h>
@interface Person : NSObject {

float heightInMeters;

int weightInKilos;

}
- (float)heightInMeters;
- (void)setHeightInMeters:(float);
- (int)weightInKilos;
- (void)setWeightInKilos:(int)w;
- (float)bodyMassIndex;
@end

martes, 7 de abril de 15

CLASES (.M)
#import Person.h

@implementation Person

// Metodos de acceso

- (void)setWeightInKilos:(int)w {

- (float)heightInMeters {

return heightInMeters;

heightInMeters = h;

weightInKilos = w;

- (float)bodyMassIndex {

- (int)weightInKilos {



return weightInKilos / (heightInMeters *
heightInMeters);

return weightInKilos;

}
//
- (void)setHeightInMeters:(float)h {

martes, 7 de abril de 15

}
@end

CLASES (IMPLEMENTACIN)
#import <Foundation/Foundation.h>
#import Person.h

int main(int argc, const char *argv[]) {



@autoreleasepool {

Person *person = [[Person alloc] init];

[person setWeightInKilos:96];

[person setHeightInMeters:1.8];

float bmi = [person bodyMassIndex];

NSLog(@person (%d %d) has a BMI of %f , [person weightInKilos], [person heightInMeters], bmi);

return 0;

martes, 7 de abril de 15

DIAGRAMA DE OBJETOS
martes, 7 de abril de 15

PROPIEDADES

Gran parte del cdigo de la clase es dedicado a los mtodos de acceso,


Apple crea una forma rpida para declarar los mtodos setter y getter en
una lnea llamada properties.

.h

@property float heightInMeters;

@property int weightInKilos;

.m

@synthesize heightInMeters, weightInKilos;

martes, 7 de abril de 15

SELF

Dentro de un mtodo, se tiene acceso a la variable local implcita self. self es un apuntador
al objeto que est ejecutando el mtodo, esto es til cuando se quiere enviar mensajes a el
mismo.
float h = [self heightInMeters];
return [self weightInKilos] / (h * h);

Adems se puede pasar a self como un argumento, dejando a otros objetos conocer donde
est el objeto actual.
- (void)addYourselfToArray:(NSMutableArray *)theArray {


}

martes, 7 de abril de 15

[theArray addObject:self];

HERENCIA
martes, 7 de abril de 15

HERENCIA
martes, 7 de abril de 15

SUSTITUCIN DE MTODOS
(OVERRIDING METHODS)
Cuando

un mensaje es enviado, la bsqueda del mtodo de


ese nombre comienza en la clase del objeto y va subiendo por
la jerarqua de la herencia. La primer implementacin que es
encontrada es la que se ejecuta. De esta manera, se pueden
sustituir los mtodos heredados con una implementacin
personalizada.

martes, 7 de abril de 15

SUPER

Para

ser precisos, la directiva super dice Ejecuta este mtodo,


pero comienza buscando su implementacin en mi super
clase

martes, 7 de abril de 15

VARIABLE DE INSTANCIA DE
OBJETO
Una

variable de instancia de objeto puede pertenecer a una de


las siguientes categoras:

Object-type

attributes: Un apuntador a un objeto


simple, por ejemplo un NSString

To-one

complejo.

relationships: Un apuntador a un objeto

To-many

relationship: Un apuntador a una instancia de


una clase de tipo coleccin.

martes, 7 de abril de 15

VARIABLES DE INSTANCIA DE OBJETO


martes, 7 de abril de 15

OBJETO CON DIFERENTES ROLES


martes, 7 de abril de 15

#IMPORT Y @CLASS

#import: se

realiza una copia idntica del archivo que lo


manda llamar, hace al compilador ms lento.

@class: Se

le dice al compilador que no se preocupe cuando


vea esa sentencia, es todo lo que necesita saber por el
momento.

martes, 7 de abril de 15

COLECCIONES
Arreglos, conjuntos y diccionarios

martes, 7 de abril de 15

ORDENAMIENTO
NSMutableArray

tiene el siguiente mtodo.

- (void)sortUsingDescriptors:(NSArray *)sortDescriptors
El

argumento es un objeto NSSortDescriptor. El descriptor de


ordenamiento contiene el nombre de una propiedad de los
objetos contenidos en el arreglo y la propiedad se puede
ordenar de forma ascendente o descendente.

martes, 7 de abril de 15

NSSORTDESCRIPTOR
martes, 7 de abril de 15

NSSORTDESCRIPTOR
NSSortDescriptor

*voa = [NSSortDescriptor
sortDescriptorWithKey:@valueOfAssets ascending:YES];

NSSortDescriptor

*ei = [NSSortDescriptor
sortDescriptorWithKey:@employeeID ascending:YES];

[employees

sortUsingDescriptors:[NSArray
arrayWithObjects:voa, ei, nil]];

martes, 7 de abril de 15

FILTRADO

Existe una clase llamada NSPredicate, un predicado contiene una sentencia que se podra cumplir.

Un NSMutableArray tiene un mtodo prctico para descartar todos los objetos que no satisfacen
el predicado:
- (void)filterUsingPredicate:(NSPredicate *)predicate;

Un NSArray tiene un mtodo para crear un nuevo arreglo conteniendo todos los objetos que
satisfacen el predicado:
- (NSArray)filteredArrayUsingPredicate:(NSPredicate *)predicate;

NSPredicate *predicate = [NSPredicate predicateWithFormat:@holder.valueOfAsets > 70];

NSArray *toBeReclaimed = [allAssets filteredArrayUsingPredicate:predicate];

Apples Predicate Programming Guide

martes, 7 de abril de 15

NSSET/NSMUTABLESET

Un conjunto es una coleccin que no puede ser ordenada, adems un objeto en


particular puede aparecer solamente una vez. Los conjuntos son principalmente
usados para verificar la existencia de algn objeto. Los conjuntos son
increblemente rpidos.

Un NSSet es inmutable, no se pueden agregar o eliminar objetos despus de que


el conjunto ya ha sido creado. NSMutableSet es la subclase que tiene la habilidad
de agregar o eliminar objetos.

No se puede obtener un objeto por ndice, debido a que una coleccin no


puede ser ordenada. En lugar de eso, se tiene un mtodo para preguntar sobre la
existencia de objetos.
- (BOOL)containsObject(id)x;

martes, 7 de abril de 15

NSDICTIONARY/
NSMUTABLEDICTIONARY
Un

diccionario es una coleccin de parejas llave-valor. La llave


es generalmente una cadena, y el valor puede ser cualquier
tipo de objeto. Como los arreglos y los conjuntos, un
diccionario puede ser mutable o no mutable.
NSMutableDictionary *executives = [[NSMutableDictionary
alloc] init];
[executives setObject:person forKey:@CEO];

martes, 7 de abril de 15

LLVM NEW SYNTAX IN


MOUNTAIN LION XCODE
NSDictionary *d = {@key: @Value,
@name: @Joris,
@n: @1234,
@3: @string
};

martes, 7 de abril de 15

NSNUMBERS
NSNumber

*n1 = @1000;

NSNumber

*n2 = @3.1415926;

NSNumber

*c = @'c';

NSNumber

*b = @YES;

NSNumber

*f = @2.5f;

NSNumber

*nu = @256u;

martes, 7 de abril de 15

CONSTANTES
Para

el caso de las constantes, existen dos maneras de


definirlas en Objective-C
#define: Le dice al preprocesador Siempre que encuentres A,
remplzalo con B
#define M_PI 3.14159265358979323846264338327950288

function-like: Macro

#define MAX(A, B)
martes, 7 de abril de 15

((A) > (B) ? (10) : (12))

VARIABLES GLOBALES

NSLocale.h
extern NSString const *NSLocaleCurrencyCode;

NSLocale.m
NSString const *NSLocaleCurrencyCode = @currency;

Uso
NSLocale *here = [NSLocale currentLocale];
NSString *currency = [here objectForKey:NSLocaleCurrencyCode];

martes, 7 de abril de 15

ENUM
enum BlenderSpeed {

BlenderSpeedStir = 1,

BlenderSpeedChop = 2,

BlenderSpeedLiquify = 5,

BlenderSpeedPulse = 9,

BlenderSpeedIceCrush = 15,

};
@interface Blender : NSObject {

enum BlenderSpeed speed;

}
- (void)setSpeed:(BlenderSpeed)x;
@end

martes, 7 de abril de 15

PARA ESCRIBIR MENOS


typedef enum {

BlenderSpeedStir = 1,

BlenderSpeedChop = 2,

BlenderSpeedLiquify = 5,

BlenderSpeedPulse = 9,

BlenderSpeedIceCrush = 15,

} BlenderSpeed;
@interface Blender : NSObject {

BlenderSpeed speed;

}
- (void)setSpeed:(BlenderSpeed)x;
@end

martes, 7 de abril de 15

ASIGNACIN AUTOMTICA
typedef enum {

BlenderSpeedStir,

BlenderSpeedChop,

BlenderSpeedLiquify,

BlenderSpeedPulse,

BlenderSpeedIceCrush,

} BlenderSpeed;

#define o variables globales?

martes, 7 de abril de 15

ESCRITURA Y LECTURA DE ARCHIVOS


CON NSSTRING Y NSDATA

martes, 7 de abril de 15

ESCRITURA DE ARCHIVO
CON NSSTRING
NSMutableString *str = [[NsMutableString alloc] init];
NSError *error = nil;
Something to str
[str writeToFile:@/tmp/cool.txt
atomically:YES
encoding:NSUTF8StringEncoding
error:&error];
martes, 7 de abril de 15

LEER ARCHIVOS CON


NSSTRING
NSString *str = [NSString alloc] initWithContentsOfFile:@/
etc/resolv.conf encoding:NSASCIIStringEncoding
error:&error];

martes, 7 de abril de 15

ESCRIBIR UN NSDATA A UN
ARCHIVO
BOOL written = [data writeToFile:@/tmp/google.png
options:0
error:&error];

martes, 7 de abril de 15

LEER UN ARCHIVO CON


NSDATA

NSData *readData = [NSData dataWithContentsOfFile:@/


tmp/google.png];

martes, 7 de abril de 15

CALLBACKS

En una aplicacin, se necesita tener un objeto que este a la escucha


de eventos, como movimientos del ratn, eventos de touch, timers y
actividad en la red, etc. Para Mac OS y iOS, esto es capturado por una
instancia de NSRunLoop. El bucle de ejecucin (run loop), se sienta y
espera a que ocurra algo, en ese momento se lanza un mensaje a otro
objeto.

Hollywood principle: Dont call us, well call you

Cuando algo ocurre, el bucle de ejecucin ejecuta una callback.


Debido a que esto es una idea general, se toma a x como un algo
especfico que ocurre. En Objective-C existen tres tipos de callbaks:

martes, 7 de abril de 15

CALLBACKS

Target-Action: Antes de comenzar la espera, se dice Cuando x


ocurre, enva este mensaje en particular a ese objeto en particular

Helper objects: Antes de comenzar la espera, se dice Aqu est este


objeto de ayuda que est de acuerdo a su protocolo. Envale mensajes
cuando las cosas ocurran. Los helper objects a menudo son conocidos
como delegates o data source.

Notifications: Existe un objeto llamado Notification Center. Antes de


comenzar la espera, se le dice al Notification Center Este objeto est
esperando este tipo de notificaciones. Cuando uno llega, se enviar este
mensaje. Cuando x ocurra, el objeto estndar publica una notificacin al
Notification Center, y el centro la reenva a su objeto.

martes, 7 de abril de 15

PROTOCOLOS

La clase de un objeto es diferente de su rol en un sistema de trabajo.


Realmente las clases con mas generales que el rol que ellas pueden jugar
en cualquier aplicacin en particular. As, las instancias de una clases
pueden ser usadas en muchos caminos diferentes. Se ha hablado de
cmo especificar una clase, es posible especificar un rol? Hasta cierto
grado, se puede especificar un rol usando el constructor @protocol.

Un protocolo es un listado de declaracin de mtodos o define un


contrato de mensajes, algunos mtodos son obligatorios y otros
opcionales. Si el objeto debe cumplir un rol, debe implementar los
mtodos obligatorios y debe escoger que mtodos opcionales va a
implementar.

martes, 7 de abril de 15

SINTAXIS PROTOCOLO
@protocol ProtocoName <NSObject>
@optional
// list of methods and properties
@required
// list of methods and properties
@end
martes, 7 de abril de 15

SUSCRIPCIN A UN
PROTOCOLO
@inteface MyClass : NSObject <MyProtocol,
AnotherProtocol, YetAnotherProtocol>

@end

martes, 7 de abril de 15

PROPERTY LIST

Un propety list es una combinacin de cualquier de las siguientes cosas:

NAArray

NSDictionary

NSString

NSData

NSDate

NSNumber

martes, 7 de abril de 15

PROPERTY LIST
#import <Foundation/Foundation.h>

[stock setObject:@GOOG

int main(int argc, const char * argv[]) {

forKey:@symbol];

@autoreleasepool {
init];

[stock setObject:[NSNumber numberWithInt:160]

NSMutableArray *stocks = [[NSMutableArray alloc]

forKey:@shares];
[stocks addObject:stock];

NSMutableDictionary *stock;
stock = [NSMutableDictionary dictionary];

[stocks writeToFile:@/tmp/stocks.plist

[stock setObject:@AAPL

atomically:YES];

forKey:@symbol];

[stock setObject:[NSNumber numberWithInt:200]


forKey:@shares];
[stocks addObject:stock];
stock = [NSMutableDictionary dictionary];

martes, 7 de abril de 15

return 0;
}

PROPERTY LIST
martes, 7 de abril de 15

PROPERTY LIST
<?xml version=1.0 encoding=UTF-8?>

<dict>

<!DOCTYPE plist PUBLIC -//Apple//DTD PLIST


1.0//EN http://www.apple.com/DTDs/
PropertyList-1.0.dtd>

<dict>
<key>shares</key>

<plist versin=1.0>

<integer>160</integer>

<array>

<key>symbol</key>
<string>GOOG</string>

<dict>
<key>shares</key>
<integer>200</integer>

</array>

<key>symbol</key>

</plist>

<string>AAPL</string>

martes, 7 de abril de 15

<dict>

ESCRIBIENDO MTODOS INIT

En la clase NSObject existe un mtodo init. Despus de asignar espacio para un objeto, se enva el
mensaje init a la nueva instancia para poder inicializar sus variables de instancia con los valores utilizables.

- (id)init {
self =[super init];
if (self) {
[self setVoltage:120];
}
return self
}

martes, 7 de abril de 15

MTODO INIT CON


ARGUMENTOS
-(id)initWithProductName:(NSString *)pn {
self = [super init];
if(self) {
[self setProductName:pn];
[self setVoltage:120]
}
return self;
}

- (id)init {
return [self initWithProductName:@Unknown];
}

martes, 7 de abril de 15

INICIALIZADOR DESIGNADO
Al

redefinir el init, con la llamada de initWithProductName:, el


mtodo se convierte en el inicializador designado, es
importante documentarlo en el cdigo.
//The designated initializer
- (id)initWithProductName:(NSString *)pn

martes, 7 de abril de 15

REGLAS PARA INIT

Reglas que todo programador Objective-C con estilo debe seguir cuando se escribe un
inicializado:

Si una clase tiene muchos inicializadores, slo uno debe hacer el trabajo real. Ese mtodo
es conocido como el inicializador designado. Todos los dems inicializadores deben
llamar, ya sea directa o indirectamente el inicializador designado

El inicializador designado deber llamar al inicializador designado de su superclase antes


de inicializar sus variables de instancia.

Si el inicializador designado de tu clase tiene un nombre diferente que el inicializador


designado de su superclase, debes redefinir el inicializador designado de la superclase
para que llame al nuevo inicializador designado.

Si se tienen muchos inicializadores, es importante documentar de manera clara cual es el


inicializador designado en la interfaz.

martes, 7 de abril de 15

CATEGORAS
Las

categoras permiten al programador agregar mtodos a


cualquier clase existente.

1.Crear:
An

objective-C category,

2.Nombre para una categora:


ClassName+CategoryName.*

martes, 7 de abril de 15

CREAR UNA CATEGORA


martes, 7 de abril de 15

CATEGORA
martes, 7 de abril de 15

INTRODUCCIN A BLOQUES
Los

callbacks (delegados y notificaciones) permiten a otros


objetos llamar mtodos en tu objeto en respuesta a eventos.
Generalmente esto ocasiona que tu cdigo se separe.

En

Mac OS X 10.6 y iOS4 se introduce una nueva


caracterstica llamada bloques. Un bloque de Objective-C es
slo un pedazo de cdigo como una funcin de C, pero este
puede ser enviado como dato.

martes, 7 de abril de 15

DECLARACIN DE UN BLOQUE
martes, 7 de abril de 15

EJEMPLO BLOQUE
int main(int argc, cons char * argv[]) {
@autoreleasepool {

NSRange fullRange = NSMakeRange(0, [newString


lenght]);
[newString replaceOccurrencesOfString:s

NSArray *oldStrings = [NSArray arrayWithObjects:@Sauerkraut,


@Raygun, @Big Nerd Ranch, @Mississippi, nil];

withString:@

NSMutableArray *newStrings = [NSMutableArray array];


options:NSCaseInsensitiveSearch
NSArray *vowels = [NSArray arrayWithObjects: @a, @e, @i,
@o, @u, nil];
range:fullRange];
// Declaracin de la variable de bloqle
}

void (^devowelizer)(id string, NSUInteger i, BOOL *stop);

[newStrings addObject:newString];
// Asignacin de un bloque a una variable
}; // Fin de la asignacin del bloque

devowelizer = ^(id string, NSUInteger i, BOOL *stop) {

[oldStrings enumerateObjectsUsingBlock:devowelizer];
NSMutableString *newString = [NSMutableString
stringWithString:string];

}
return 0;

for(NSString *s in vowels) {

martes, 7 de abril de 15

DECLARACIN Y
ASIGNACIN DE UN BLOQUE
void (^devowelizer)(id string, NSUInteger i,
BOOL *stop) = ^(id string, NSUInteger i,
BOOL *stop) {
NSMutableString *newString
= [NSMutableString stringWithString:string];

withString:@
options:NSCaseInsensitiveSearch
range:fullRange];

for(NSString *s in vowels) {
NSRange fullRange =
NSMakeRange(0, [newString lenght]);
[newString
replaceOccurrencesOfString:s

martes, 7 de abril de 15

}
[newStrings
addObject:newString];
}; // Fin de la asignacin del bloque

TYPEDEF

typedef void (^ArrayEnumerationBlock)(id, NSUInteger,


BOOL);

ArrayEnumerationBlock devowelizer;

martes, 7 de abril de 15

RETORNO DE VALORES
double (^divBlock)(double,double) = ^(double k, double j) {
return k/j;
};

double quotient = divBlock(42.0, 12.5);

martes, 7 de abril de 15

PATRONES DE DISEO DE
SOFTWARE

martes, 7 de abril de 15

PATRONES DE DISEO

En la ingeniera de software un patrn de diseo, es una solucin


reutilizable general a un problema que ocurre comnmente en el diseo
de software, es una descripcin o plantilla del como resolver un problema
que puede ser usado en diferentes situaciones. Los patrones son
formalizados como las mejores practicas que el programador puede
implementar en la aplicacin.

El diseo de patrones orientado a objetos, generalmente muestra la


relacin e interacciones entre las clases y los objetos, sin especificar las
clases u objetos finales que corresponden a la aplicacin. Tambin nos
puede ayudar a la creacin de cdigo poco acoplado, de manera que se
pueda cambiar o reemplazar componentes en el cdigo, de manera rpida.

martes, 7 de abril de 15

PATRONES DE DISEO

Los patrones de diseo se encuentran agrupados en categoras:


patrones de creacin, patrones estructurales y patrones de
comportamiento.

Los patrones de diseo ms comunes en Cocoa Touch son:

Creacionales: Singleton y Abstract Factory

Estructurales: MVC, Decorator, Adapter, Facade y Composite

De comportamiento: Observer, Memento, Chain of


Responsability y Command

martes, 7 de abril de 15

MODEL-VIEW-CONTROLLER
Modelo:

Es el objeto que contiene los datos de la


aplicacin, as como tambin define como manipularlos.

Vista:

Corresponde al objeto encargado de la presentacin


visual del Modelo y los controles con los que el usuario puede
interactuar (UIView).

Controlador:

El controlador es el encargado de coordinar


el trabajo, accede a los datos del modelo y los muestra en la
vista (ViewController).

martes, 7 de abril de 15

DIAGRAMA MVC
martes, 7 de abril de 15

PRIMERA APLICACIN IOS


Class

prefix: Tres letras, Apple dos NS, UI, etc.

App

delegate: Punto de inicio de la aplicacin, cada


aplicacin tiene el suyo. Es el responsable de procesar los
eventos y coordinar el trabajo de otros objetos en la aplicacin.

UIKit:

Framework que contiene las definiciones de clases


para iOS

Foundation:

martes, 7 de abril de 15

Supporting Files -> -Prefix.pch

DELEGADO DE LA
APLICACIN

UIApplication: Controla el estado de la aplicacin y acta como


enlace al sistema operativo. Se crea automticamente un delegado
para la instancia de UIApplication, de aqu el nombre de app delegate.

El delegado tiene la responsabilidad de recibir los mensajes sobre el


estado de la instancia de UIApplication.

application:didFinishLaunchingWithOptions:

Es el mtodo ms importante del delegado, indica que la aplicacin


est a punto de presentarse al usuario.

martes, 7 de abril de 15

MVC EN IOS
martes, 7 de abril de 15

LA APLICACIN
martes, 7 de abril de 15

DIAGRAMA DE OBJETOS DE LA APP


martes, 7 de abril de 15

MVC DE LA APLICACIN
martes, 7 de abril de 15

SINGLETON

Asegura

que slo exista una instancia para una clase dada y


que hay un punto de acceso global para esa instancia.

martes, 7 de abril de 15

DIAGRAMA SINGLETON
martes, 7 de abril de 15

You might also like