curso de iniciación a la programación del iphone sdk con objective-c
DESCRIPTION
Curso de Iniciación a la Programación del iPhone SDK con Objective-C. Foundation Framework. Moncada, 9 de Julio de 2010. Objective-C. Características especiales Tipo general 'id' → id variable; // NO id *variable Objeto puntero null -> nil Puedes mandarle un mensaje a nil variable = nil; - PowerPoint PPT PresentationTRANSCRIPT
Curso de Iniciación a la Programación del iPhone SDK con Objective-CFoundation Framework
Moncada, 9 de Julio de 2010
2
Objective-C
Características especiales
Tipo general 'id' → id variable; // NO id *variable
Objeto puntero null -> nil
• Puedes mandarle un mensaje a nil
variable = nil;
[variable metodoObjeto] //no falla en runtime
Tipo booleano BOOL (valores YES o NO)
Selectores → punteros a función
SEL accion = [boton accion]
SEL sel = @selector(setName:age:)
3
Foundation Framework
• Conjunto de clases básicas (cadenas, números, arrays)
• Clases para preferencias, hilos, ficheros...
• Entrada/salida, tuberías
4
Foundation Framework
• NSObject
– Clase raíz
– Implementa comportamiento básico
• Gestión de la memoria
• Introspección (qué clase es, descripción de clases)
• Igualdad entre objetos
5
Foundation Framework
• NSString
– Clase que representa cadenas
– Usada en lugar de char*
– La clase más usada
– Soporta Unicode (sistema de codificación que soporta todas las palabras del mundo)
6
NSString
• Cadenas constantes
– NSString *string = @”Cadena constante”;
– NSString *string = [[NSString alloc] initWithString:@”Cadena constante”];
– NSString *string = [NSString stringWithString:@”Cadena constante”];
• Cadenas formateadas
– NSString *string = [NSString stringWithFormat:@”Hola %s”, [person name]];
7
NSString
• Operaciones comunes
– Añadir una cadena a otraNSString *cadena1 = @”Hola”;
NSString *cadena2;
cadena2 = [cadena1 stringByAppendingString:@” mundo”];
– Obtener valor numérico -> [cadena intValue];
– Mirar prefijos → [cadena1 hasPreffix:@”Ho”];
– Igualdad → [cadena1 isEqualToString:cadena2];
8
NSMutableString
• Subclase de NSString
• Permite modificar cadenas
• Ejemplo:
NSMutableString *mString = [NSMutableString string];
[mString appendString:@”Hola ”];
[mString appendFormat:@” %s”,[person name]];
9
Colecciones
• Array (NSArray)– colección ordenada de objetos
• Diccionario (NSDictionary) – colección de pares clave-valor
• Set (NSSet) – colección de objetos únicos;
• Hay versión mutable e inmutable de cada tipo.
10
NSArray
• Métodos importantes
– arrayWithObjects:(id)firstObject,...,nil
– (unsigned)Count //Número de objetos
– (id)objectAtIndex:(NSInteger)index
– (unsigned)indexOfObject:(id)object
• Ejemplos
NSArray *array = [NSArray arrayWithObject:@”Lunes”,@”Viernes”,nil];
NSLog(“Index of Lunes %d”,[array indexOfObject:@”Lunes”]);// 0
NSLog(“Object at index 1: %@”,[array objecyAtIndex:1]); // Martes
NSLog(“Número de días: %d”,[array count]);
11
NSMutableArray
• Métodos importantes:
+ (NSMutableArray *)array;
- (void)addObject:(id)object;
- (void)removeObject:(id)object;
- (void)removeAllObjects;
- (void)insertObject:(id)object atIndex:(unsigned)index;
NSMutableArray *array = [NSMutableArray array];
[array addObject:@”Lunes”];
[array addObject:@”Viernes”];
[array removeObjectAtIndex:1];
12
NSDictionary
• Métodos comunes
– dictionaryWithObjectsAndKeys:(id)firstObject
– count
– objectForkey
• Ejemplo
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @”Lunes”, @”Dia1”,@”Martes”,@”Dia2”,nil];
NSLog(@”Dia 2 es %@”,[dic objectForKey:@”Dia2”]); //Martes
13
NSMutableDictionary
• Métodos
– +(NSMutableDictionary *)dictionary;
– (void)setObject:(id)object forKey:(id)key;
– (void)removeObjectForKey:(id)key;
– (void)removeAllObjects;
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:@”Valor” forKey:@”Clave1”];
[dic setObject:@”Valor2” forKey:@”Clave2”];
[dic removeObjectForKey:@”Clave1”];
14
NSSet y NSMutableSet
• Métodos NSSet
– +setWithObjects:(id)firstObject,...,nil
– (unsigned)count;
– (BOOL)containsObject:(id)object;
• Métodos NSMutableSet
– +(NSMutableSet*)set;
– (void)addObject:(id)object;
– (void)removeObject:(id)object;
– (void)minusSet:(NSSet *)otherSet;
– (void)intersectSet(NSSet *)otherSet;
15
NSNumber
• Normalmente se usa los tipos de números estándar de C
• Convertir un número en un objeto → NSNumber
• Subclase de NSValue
• No tiene versión mutable
• Métodos comunes
– +(NSNumber *)numberWithInt.(int)value;
– +(NSNumber *)numberWithDouble:(double)value;
– (int)intValue;
– (double)doubleValue;
16
NSLog
• La clase más usada al depurar un programa
• Muestra una cadena por consola
• Acepta cadenas con formato
• Ejemplo:
NSLog(@“Imprime contador %d”,[array count]);
NSLog(@”Fin función”);
17
Recorrer colecciones
// Manera 'clásica'
Person *person;
int count = [array count];
for (i = 0; i < count; i++) {
person = [array objectAtIndex:i];
– NSLog([person description]);
}
// Manera 'moderna'
for (Person *person in array) {
NSLog([person description]);
}
18
Bibliografía
Curso Stanford 2010 (iTunes U)