Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Memory Management
Memoria
Creacin e inicializacin de objetos Alloc e init Memory Management Retain, release, copy, dealloc, autorelease Propiedades Parmetros de creacin Notacin 'punto'
Creacin e inicializacin
Mtodo alloc Mtodo de clase que guarda la memoria necesaria Mtodo init Mtodo de instancia que inicializa los valores de la variables y realiza otras tareas Pueden haber varios mtodos init en una clase (ms especficos con parmetros) NSString *string = [[NSString alloc] initWithString:@Hola];
Memory Management
En iPhone OS NO hay recolector de basura El programador es el encargado de liberar los recursos (llamadas balanceadas) Cada objeto en Objective-C tiene un destructor, mtodo -dealloc
Memory Management
Memory Management
Qu pasa con el siguiente mtodo? -(NSString *)returnString{ NSString *string = [[NSString alloc] initWithString:@Hola]; return string; //fuga de memoria } Solucin: NSAutoreleasePool
Autorelease Pool
Clase NSAutoreleasePool Pila de objetos a liberar NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Por convencin
Demostracin
Errores comunes
Fugas de memoria (leaks) -(NSString *) proofMethod{ NSString *string = [[NSString alloc] initWithString:@Hola]; return string; //Fuga de memoria }
Errores comunes
}
-(NSString *) proofMethod{ NSString *string = [[NSString alloc] stringWithString:@Hola]; return string; }
10
Errores comunes
11
Errores comunes
-(void) proofMethod{
NSString *string = [[NSString alloc] initWithFormat:@Hola %s,[person name]]; [self setName:string]; [string release]; //Bien. NSString con constructor INIT }
12
Propiedades
Desde Objective-C 2.0 Proveen el acceso a los atributos del objeto Permiten indicar al compilador Permisos de acceso a variables de instancia Polticas de administracin de memoria
13
Propiedades
Mtodo GET
(NSString *)Name{ return varName;
Mtodo SET
(void)setName:(NSString *)value{ If (varName!=value){
}
} }
[varName release];
varName=[value copy];
14
Propiedades
@end
15
Propiedades
Modificadores de las propiedades: Nonatomic: Si no hay problemas de concurrencia Assign: Crea un enlace dbil (weak link) Retain: Incrementa en 1 el retain count del objeto Copy: Realiza una copia del objeto readonly
16
Acceso a variables self.name = newString; [self setName: newString]; NSLog(@%s, [self name]); NSLog(@%s,self.name); es igual a es igual a
17
Acceso a variables self.name = newString; name = newString self.name = newString name = newString usa el mtodo SET acceso DIRECTO variable NO es igual a
18
19
-(void) setName:(NSString *)value { self.name = value; } Es lo mismo que -(void) setName:(NSString *)value { [self setName:value]; // Bucle infinito!
20
Bibliografa
Objective-C 2.0 Programming Language Memory Management Programming Guide for Cocoa
21