2. Garbage Collector
• En iOS no tenemos Garbage Collector
• En MacOS X se puede activar.
• En iOS tendremos que gestionar la
memoria.
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
3. Gestión completamente
manual de memoria?
• Tendremos que responsables y conocer
que va a pasar con nuestros objetos en
cada momento.
• Mecanismos para ayudarnos:
• Métodos de acceso/properties
• Autorelease
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
4. alloc/dealloc
• Todo objeto reserva y libera la memoria
que utiliza.
• Para cada nuevo objeto se realizará un
alloc (de forma implícita o explícita).
• Nunca llamar a dealloc.
• Se encarga el sistema
• Política de retain count
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
5. Política de Retain Count
• Un objeto se mantiene en memoria mientras
retainCount > 0
• Cuando retainCount == 0 el sistema llama al
dealloc del objeto.
• Importante implementar:
-(void)dealloc;
en nuestros objetos y liberar todos los
objetos usados y cancelar procesos en
ejecución.
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
6. Reglas sobre retain
• Siempre liberamos los objetos que
retenemos
• Retenemos sólo los objetos que
creamos o retenemos explícitamente.
• Sólo asignar puede causar crashes.
• No balancear el conteo correctamente
generará memory leaks.
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
9. Métodos de acceso.
getters y setters
• Es conveniente acceder a los atributos de un
objeto a partir de getters y setters
• Dot notation:
• somePointer=[myObject var];
• somePointer=myObject.var;
• [myObject setVar:value];
• myObject.var=value;
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
11. Property(opciones) 1
• atomic
• valor por defecto. Más seguro pero
menos eficiente
• nonatomic
• más eficiente, en raras ocasiones
puede dar problemas (multitheading)
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
16. NSAutoReleasePool
• Siempre se suele tener un pool
• Se ejecuta limpia al final de cada ciclo de ejecución
• Las plantillas de proyecto de XCode lo llevan
definido en el main
• Podemos crear y trabajar con los pools que
deseemos
• Siempre dentro de un mismo método
• Suelen utilizarse en métodos que hacen uso
intensivo de elementos autoreleased
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
18. Core Foundation,
Debugging y más.
Podeis mirar la documentación
o venir al próximo evento.
La segunda parte de gestión de memoria y
la ponencia sobre Debugging tuvieron que
ser pospuestas por falta de tiempo.
[NSCoderBCN event:@”Hello NSCoder” date:28/05/11]